Я хочу сделать очень простую вещь: скопировать файл.
Copy
- простая (и фундаментальная) команда. Это должно быть легко, но это кажется сложным, когда дело доходит до имен файлов Unicode (с использованием English XP
, cmd.exe
и сценария .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
не проходит первый NULL-байт (первого символа), а просто выходит.
Есть ли способ сделать это из сценария .cmd
? (Я хочу использовать оболочку cmd.exe
)
Возможно, есть служебная программа, которую можно вызвать из моего .cmd
...
Все предложения приветствуются.
PS Чтобы прояснить вопрос о Манине ... Меня не волнует, как имена файлов Unicode отображаются в окне консоли (этого просто не происходит для большинства нелатинских букв в окне cmd.exe)... Меня интересует только то, что я могу скопировать файл с буквами Unicode в своем имени файла - через пакетный "скрипт" .cmd.