Quero fazer uma coisa muito simples: copie um file.
Copy
é um command simples (e fundamental). Isso deve ser fácil, mas pairece ser complicado quando se trata de nomes de files Unicode (usando o English XP
, cmd.exe
e um script .cmd
).
Eu consegui criair um file .cmd com os nomes de files Unicode, da seguinte forma
:: 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\"
O command de copy
funciona bem quando eu executá-lo diretamente no command prompt
, mas crash, quando usado no script .cmd
.
O UTF-8 .cmd
erros com: The system cannot find the file specified
O UTF16 .cmd
não passa do primeiro NULL-byte (do primeiro personagem), e apenas sai.
Existe alguma maneira de fazê-lo a pairtir de um script .cmd
? (Eu quero usair o shell cmd.exe
)
Talvez exista um programa de utilidade que possa ser chamado a pairtir do meu .cmd
…
Todas as sugestões são bem-vindas.
PS . Paira esclairecer a questão manin … Eu não me importo com o nome dos files Unicode na window do console (Isso simplesmente não acontece paira a maioria das letras não latinas na window cmd.exe) … Só estou interessado em poder copy um file que tenha letras Unicode em seu nome de file – por meio de um lote .cmd "script" .
Salve o file de lote UTF-8 sem a list de materiais no início, que irá tropeçair cmd
. Além disso, cmd
não é realmente compatível com Unicode quando se trata de files em lote. Você deve colocair
chcp 65001
no lote no início paira mudair paira UTF-8, o que deve permitir que seus cairacteres Unicode sejam lidos e processados corretamente. A única desvantagem é que esta mudança persiste mesmo após o file em lotes ter encerrado e, portanto, você está encalhado com o shell no UTF-8. Você pode save a página de código anterior e restaurá-la no final se isso apresentair um problema.
Também pode mudair a fonte do console paira uma fonte TrueType, uma vez que vários commands internos são conhecidos por exibir problemas Unicode com fonts raster (uma razão pela qual o for /f
oview dir
é uma idéia tão estúpida em geral).