注:此问题与我在4个月前询问的问题类似,但不是相同的问题。
我有以下批处理脚本:不正确的批处理脚本执行
@echo off
set DIR=U:\sendToJeff
echo Starting list filter...
%DIR%\OFCNSFilter.exe %DIR%\filter.ini %DIR%\OFCNS_FINAL_mod.xml %DIR%\outfile.xml
echo errorlevel = %errorlevel%
当在cmd中运行,我得到下面的输出:
U:\sendToJeff>testscript.bat
Starting list filter...
U:\sendToJeff>
OFCNSFilter.exe是一个.NET 3.5的程序(C#编写)运行在Windows Server 2003 R2 Standard x64 Edition SP2上。请注意,第二个ECHO
命令未执行。但是,如果我ECHO%ERRORLEVEL%,它是0(0 =成功,1 =失败)。程序实际运行也很明显,因为outfile.xml已经创建。
这里是我变得更加困惑的地方。如果我运行一次,我会得到上面的输出结果。但是,如果我尝试运行它不止一次在同一个cmd窗口,我得到下面的输出:
U:\sendToJeff>testscript.bat
Starting list filter...
U:\sendToJeff>testscript.bat
U:\sendToJeff>
有没有人见过这种行为在一个批处理脚本?我将不胜感激任何有关如何解决这个问题的见解。如果有帮助,我也使用System.Xml.Linq库。
我记得像从另一个.cmd调用.cmd时发生的情况您是否尝试在第四行开头添加“call”? – 2015-02-11 20:07:03
显然有'STDIN'和/或'STDOUT'和/或'STDERR'句柄出了问题。接下来可以帮助:'开始'“/ D%DIR%\/WAIT%DIR%\ OFCNSFilter.exe ...' – JosefZ 2015-02-11 20:30:22