Estoy trabajando en un proyecto que me obliga a usar el programador de tareas de Windows para ejecutar la consulta mysql, este es el contenido del archivo por lotes:
mysql -ufoo -pbar -D %1 < %2
cuando probé el archivo por lotes a través de cmd:
task_sheduler.bat dbName pathToSqlFile
Yo obtengo:
mysql -ufoo -pbar -D dbName 0<pathToSqlFile
Solo quiero decir eso esta funcionando, mi pregunta es de que se trata el Espacio extra y el 0, ¿de dónde vinieron?
- El espacio extra está entre el dbName y 0
- Estoy usando Windows 7 Ultimate Service Pack 1 (x64)
Respuestas
3 para la respuesta № 1Supongo que su archivo de lote no tiene un @echo off
comando, por lo que se refiere a el eco de los comandos que aparecen en la pantalla cuando se ejecuta un archivo por lotes. La visualización de estos comandos con frecuencia incluye caracteres adicionales que cmd.exe inserta para mostrar exactamente los comandos ejecutados.
En el caso de redirecciones, <input
es una forma corta de Redireccionamiento stdin, y el número de Stdin es cero, por lo que la redirección real es 0<input
. Lo mismo sucede con >output
, que se repite como 1>output
. cmd.exe también elimina múltiples espacios del código original e inserta los necesarios para mostrar claramente los comandos ejecutados.
Si no desea ver estas explicaciones de comando, simplemente inserte un @echo off
comando al comienzo de su archivo por lotes.
1 para la respuesta № 2
cmd prefija todos los comandos de redirección por el identificador predeterminado si no se proporciona ninguno. Los mangos están definidos. aquí. 0<file
por lo tanto significa que queremos que el archivo sea redirigido a la entrada estándar. El espacio extra está ahí para prevenir un comando como hi.exe<myfile
de ser mal interpretado como hi.exe0 < myfile