我正在开发一个项目,要求我使用窗口任务调度程序来执行mysql查询,这是批处理文件的内容:
mysql -ufoo -pbar -D %1 < %2
当我通过cmd测试批处理文件时:
task_sheduler.bat dbName pathToSqlFile
我明白了:
mysql -ufoo -pbar -D dbName 0<pathToSqlFile
我只是想说正在工作,我的问题是额外空间和0,它们来自哪里?
答案 0 :(得分:3)
我假设您的批处理文件没有@echo off
命令,因此您可以参考执行批处理文件时显示在屏幕上的命令的回显。这些命令的显示通常包括cmd.exe插入的其他字符,以准确显示已执行的命令。
在重定向的情况下,<input
是 Stdin重定向的简短形式,并且Stdin的数量为零,因此实际重定向为0<input
。 >output
也是如此,它被回复为1>output
。 cmd.exe还会从原始代码中删除多个空格并插入所需的空格,以便清楚地显示已执行的命令。
如果您不想看到这些命令扩展,只需在批处理文件的开头插入@echo off
命令。
答案 1 :(得分:1)
cmd将默认句柄的所有重定向命令作为前缀。句柄定义为here。 0<file
因此意味着我们希望将文件重定向到标准输入。额外的空间可以防止hi.exe<myfile
之类的命令被错误地解释为hi.exe0 < myfile