我有一个批处理文件程序,可以从另一个批处理文件调用,所以我可以将错误输出重定向到一个文件。运行命令START /B "C:\Some\Script" 2>"C:\Some\Log.log"
重定向是否被识别为参数?
只是一个没有实际用处的问题(至少我可以说),只是好奇地问。
答案 0 :(得分:2)
不,它没有。尝试使用它作为测试脚本来验证:
set argC=0
for %%x in (%*) do Set /A argC+=1
echo %argC%
在该文件中,argC是参数的数量。 (来源:Wikibooks,通过this answer。)
答案 1 :(得分:2)
Ben是正确的 - 重定向不算作参数。在调用脚本之前处理重定向。
作为将args计为测试的替代方法,您只需查看已传入脚本的args
echo %*
使用START或CMD / C时的另一个选项是回显%CMDCMDLINE%以查看用于启动CMD的确切行(包括参数)。有时帮助诊断解析,转义和扩展问题非常方便。当CMD的实例化是隐含的时,例如FOR /F %%A IN ('command')
或command1|command2
(管道的每一侧都有自己的CMD会话),这也很方便。
我很好奇您使用START /B script 2>logFile
代替CALL script 2>logFile
的原因?它们都应该有效,但我认为第二种选择更简单,更有效。