Я хочу сделать очень простую вещь: Скопируйте файл.
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 "сценарий".
Сохраните пакетный файл UTF-8 без BOM в запуске, который собьет с толку cmd
. Кроме того, cmd
не действительно осведомлено о Unicode когда дело доходит до пакетных файлов. Необходимо поместить
chcp 65001
в пакет вначале для переключения на UTF-8, который должен позволить символам Unicode быть считанными и обработанными правильно. Единственный недостаток - то, что это изменение сохраняется даже после пакетного файла, из которого выходят и таким образом, Вы скручиваетесь с оболочкой в UTF-8. Можно сохранить предыдущую кодовую страницу и восстановить ее в конце, если это создает проблему.
Также изменение шрифта консоли к шрифту TrueType могло бы помочь, так как несколько внутренних команд, как известно, показывают проблемы Unicode с растровыми шрифтами (причина, почему for /f
dir
обычно такая глупая идея).