Используя Windows cmd.exe и пакет .cmd, я могу копировать/копировать с помощью xcopy/??? имя файла Unicode от x:\* к y:\*

Я хочу сделать очень простую вещь: Скопируйте файл.
Copy простое (и фундаментальный) команда. Это должно быть легко, но это, кажется, сложно когда дело доходит до имен файлов Unicode (использование English XP, cmd.exe, и a .cmd сценарий).
Мне удалось создать .cmd файл с именами файлов Unicode, следующим образом

    :: To create the final .cmd script
    :: 
       set SRCE=D:\_cmd\cpp
       set DEST=H%SRCE:~1%

       cmd.exe /U /c DIR /A:-D /s /b "%SRCE%" >"SRCE.UTF16" 
       cmd.exe /U /c DIR /A:-D /s /b "%DEST%" >"DEST.UTF16" 

       ConvUTF.exe  1628 "DEST.UTF16" "DEST.UTF-8"
       ConvUTF.exe  1628 "SRCE.UTF16" "SRCE.UTF-8"

    :: Then, with `sed.exe`, `diff.exe`, and `ConvUTF.exe` again...
    :: the resulting UTF-8 (or UTF16) .cmd file looks like this...
    :: 
       copy "D:\_cmd\cpp\ā.क.test" "H:\_cmd\cpp\"  

copy команда хорошо работает, когда я выполняю ее непосредственно в command prompt, но сбои при использовании в .cmd сценарий.
UTF-8 .cmd ошибки с: The system cannot find the file specified
UTF16 .cmd не заканчивает первый ПУСТОЙ байт (первого символа) и просто выходит.

Есть ли некоторый способ сделать это от a .cmd сценарий? (Я хочу использовать cmd.exe оболочка)
Возможно, существует утилита, которую можно назвать от моего .cmd...
Все предложения приветствуются.

PS. Разъяснить проблему менина... Я не забочусь о том, как имена файлов Unicode отображаются в консоли (Которого просто не происходит для большинства букв non-latin-based в окне cmd.exe)... Я только interesterd в способности скопировать файл, который имеет буквы Unicode в его имени файла - через пакет .cmd "сценарий".

2
задан 02.07.2015, 10:10

1 ответ

Сохраните пакетный файл UTF-8 без BOM в запуске, который собьет с толку cmd. Кроме того, cmd не действительно осведомлено о Unicode когда дело доходит до пакетных файлов. Необходимо поместить

chcp 65001

в пакет вначале для переключения на UTF-8, который должен позволить символам Unicode быть считанными и обработанными правильно. Единственный недостаток - то, что это изменение сохраняется даже после пакетного файла, из которого выходят и таким образом, Вы скручиваетесь с оболочкой в UTF-8. Можно сохранить предыдущую кодовую страницу и восстановить ее в конце, если это создает проблему.

Также изменение шрифта консоли к шрифту TrueType могло бы помочь, так как несколько внутренних команд, как известно, показывают проблемы Unicode с растровыми шрифтами (причина, почему for /f dir обычно такая глупая идея).

1
ответ дан 12.12.2019, 00:25

Теги

Похожие вопросы