2016-04-22 132 views
0

我试图调用运行for循环批处理文件并调用第二个脚本:for循环窗口cmd并批处理文件无法正常工作

for /f "usebackq" %%i in (`dir/b /o:d %partionHome%\tmp\queue\*.t~#`) do %partitionHome%\conf\SQLLoader\SQL_Loader_%DSNname%\Script.bat %1 %2 %3 %4 %5 %6 %7 %%i %has_prefix% %partionHome% 

Script.bat从来没有运行;我试过添加,但我相信这被忽略FOR /F,我只是无法调用脚本的循环。所有参数都可用,路径等是正确的?

+0

当您从命令行运行它时,这是否正常工作? '%partitionHome%\ conf \ SQLLoader \ SQL_Loader_%DSNname%\ Script.bat%1%2%3%4%5%6%7 %% i%has_prefix%%partionHome%'我会想象'%1%2 ...%7'不正确,因为这些是无意义的论点......除非这是一个更大的脚本的一部分,并且你遗漏了传递给这个子程序的参数。 –

+0

@Stephan - 他有USEBACKQ选项,所以back-ticks是正确的。 – dbenham

回答

0

DIR命令可能不会返回任何东西,所以FOR/F无法迭代。

在我看来像你有一个拼写错误:%partionHome%%partitionHome%

此外,请确保您的变量partitionHomeDSNname正确定义。

的CALL肯定是需要的(一旦你解决其他问题)

最后,你应该用引号括起来你的路,万一有值内空间和/或毒物字符。

for /f "usebackq" %%i in (`dir/b /o:d "%partitionHome%\tmp\queue\*.t~#"`) do call "%partitionHome%\conf\SQLLoader\SQL_Loader_%DSNname%\Script.bat" %1 %2 %3 %4 %5 %6 %7 "%%I" %has_prefix% "%partitionHome%"