Estoy intentando eliminar algunos archivos con caracteres Unicode en ellos con la secuencia de comandos por lotes (es un requisito). Así que corro cmd y ejecutar:La secuencia de comandos por lotes no se ejecuta si se llamó a chcp
> chcp 65001
establecer eficazmente a la página de códigos UTF-8. Y funciona:
D:\temp\1>dir
Volume in drive D has no label.
Volume Serial Number is 8C33-61BF
Directory of D:\temp\1
02.02.2010 09:31 <DIR> .
02.02.2010 09:31 <DIR> ..
02.02.2010 09:32 508 1.txt
02.02.2010 09:28 12 delete.bat
02.02.2010 09:20 95 delete.cmd
02.02.2010 09:13 <DIR> Rún
02.02.2010 09:13 <DIR> Гуцул Каліпсо
3 File(s) 615 bytes
4 Dir(s) 11 576 438 784 bytes free
D:\temp\1>rmdir Rún
D:\temp\1>dir
Volume in drive D has no label.
Volume Serial Number is 8C33-61BF
Directory of D:\temp\1
02.02.2010 09:56 <DIR> .
02.02.2010 09:56 <DIR> ..
02.02.2010 09:32 508 1.txt
02.02.2010 09:28 12 delete.bat
02.02.2010 09:20 95 delete.cmd
02.02.2010 09:13 <DIR> Гуцул Каліпсо
3 File(s) 615 bytes
3 Dir(s) 11 576 438 784 bytes free
entonces puse las mismas rmdir
comandos de script por lotes y guardar en codificación UTF-8. Pero cuando corro no pasa nada, literalmente nada: ni siquiera el eco funciona desde el script por lotes en este caso. Incluso el script de guardado en la codificación OEM no ayuda.
Parece que cuando cambio la página de códigos a UTF-8 en la consola, los scripts simplemente dejan de funcionar. ¿Alguien sabe cómo arreglar eso?
Reflexionando y escribiendo una respuesta real pronto, pero dos preguntas: ¿Se aseguró de que su archivo por lotes no tenga U + FEFF al inicio? ¿Y puede usar VBScript quizás en lugar de un archivo por lotes? El soporte de Unicode es mucho más fácil allí. – Joey
no, no hay lista de materiales en el archivo por lotes. Puedo usar VBS, pero solo quería saber si mi problema se puede resolver directamente. – Andy
Tal vez pueda; Hace algún tiempo, hice algunos progresos con Unicode en archivos por lotes, pero de ningún modo es bonito y, en el mejor de los casos, era irregular. – Joey