为什么在从另一个批处理文件中调用批处理文件时不会运行?

时间:2013-02-26 16:00:30

标签: batch-file cmd call

我有一个批处理文件,首先创建另一个包含ClearCase cleartool命令的批处理文件,然后运行它:

ECHO cleartool lsactivity -long "%ACTIVITY%"^>"%OUTPUTFILE%">FILETORUN.bat
CALL FILETORUN.bat

运行批处理时,会使用正确的格式生成FILETORUN.bat,但完全忽略CALL

如果ECHOCALL之后输出到日志文件,我可以看到该脚本只是跳过它。

它可能是什么?

我尝试删除CALL,但没有任何区别。

编辑:解决方案

谢谢大家的意见。我发现了这个问题。在脚本中写入批处理和批处理调用之前,有一个命令可以将信息从文件中读取到变量中:

SET /p FILETODELETE=<rmname_%CLEARCASE_USER%.tmp

它只读取第一行。由于某种原因,这与临时批处理文件产生了冲突,我不知道为什么。我使用不同的解决方案从文件中读取第一行,冲突不再发生了:

(set FILETODELETE=)
for /f "delims=" %%q in (rmname_%CLEARCASE_USER%.tmp) do if not defined FILETODELETE set FILETODELETE=%%q

如果有人能说出一些亮点那就太棒了!

1 个答案:

答案 0 :(得分:0)

SET / P等待用户输入,因此它实际上将使用您之后尝试执行的操作完成命令并使用输入缓冲区,这可能会在每台计算机上产生不同的结果。 有关详细信息,请参阅set command reference