在执行脚本/程序时,重定向是否被识别为参数?

时间:2012-01-16 16:46:43

标签: batch-file windows-xp cmd

我有一个批处理文件程序,可以从另一个批处理文件调用,所以我可以将错误输出重定向到一个文件。运行命令START /B "C:\Some\Script" 2>"C:\Some\Log.log"重定向是否被识别为参数?

只是一个没有实际用处的问题(至少我可以说),只是好奇地问。

2 个答案:

答案 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的原因?它们都应该有效,但我认为第二种选择更简单,更有效。