Cuando ejecuto ciertos archivos (principalmente lotes) usando PsExec, obtengo estos extraños símbolos '' 'antes de mi comando. Mi pensamiento inicial fue que estaba usando una codificación incorrecta, pero después de verificar, me di cuenta de que todos mis archivos estaban usando UTF-8.
25
Respuestas:
Esto tiene dos causas:
cmd.exe no es compatible con UTF-8. Siempre usa una de las codificaciones de un solo byte a menudo llamada "OEM": cp437, cp775, etc., dependiendo de la configuración regional del sistema.
(Esperaba que también admitiera UTF-16, pero aparentemente no; ni siquiera si agregué la lista de materiales UTF-16).
Su editor de texto está agregando una "marca de orden de bytes" (bytes
EF
BB
BF
) UTF-8 al comienzo de todos los archivos UTF-8.Cuando cmd.exe lee su script, no sabe qué hacer con la marca: ve la lista de materiales como tres caracteres cp437 comunes
’
╗
┐
e intenta usarlos como parte del nombre del comando.Configure su editor para que deje de agregar la lista de materiales a los archivos codificados con UTF-8. (Solo tiene sentido en UTF-16, y es muy inútil en UTF-8).
eh
qué
fuente
Para ampliar la respuesta de @ dsolimano , si está utilizando específicamente Visual Studio , y en mi caso es 2013 , lo solucioné haciendo lo siguiente:
Ahora, cuando abra un archivo .bat desde Visual Studio , inicialmente se le solicitará:
Deberá desglosar las opciones hasta llegar a la opción DOS de su idioma:
Haga clic en Aceptar para terminar de abrir el archivo.
De acuerdo, aunque debería ser bastante obvio en este punto, si puede ver los

caracteres al comienzo de su archivo, le conviene eliminarlos y guardar el archivo, ahora con la codificación correcta. Esto es lo que evita que se te vuelva a preguntar la próxima vez.Con todo eso en su lugar, le alegrará saber que ahora puede ver , editar y guardar sus archivos .bat desde Visual Studio para que cmd.exe ya no le brinde el atroz error antes mencionado de:
fuente
Esas son marcas de orden de bytes Unicode . Cmd.exe no los entiende. Si vuelve a guardar sus archivos en el Bloc de notas con codificación ANSI, eso debería solucionar el problema.
Por ejemplo, creé este archivo por lotes:
Primero lo guardo con codificación UTF-8
Luego con Unicode
Y finalmente con ANSI
fuente
Como se explicó anteriormente, este carácter es el carácter unicode BOM (marca de orden de bytes) utilizado como firma y que cmd.exe no reconoce.
Puede eliminarlo de manera segura de muchas maneras.
He encontrado muy fácil hacer lo siguiente:
fuente