注意:这个问题类似于我在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是在Windows Server 2003 R2 Standard x64 Edition SP2上运行的.NET 3.5程序(用C#编写)。请注意,第二个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库。
答案 0 :(得分:0)
我终于明白了。在程序的过去迭代中,我正在将数据输出到控制台。此数据采用UTF8编码,因此我必须执行Console.OutputEncoding = System.Text.Encoding.UTF8;
才能正确打印数据。虽然这可以在我的机器和运行Windows Server 2012 R2的服务器上运行,但我想在Windows Server 2003上有这样的问题。只需删除该行代码即可解决所有问题。因此,这最终成为一个C#/ VB.NET问题,而不是批处理脚本,但我希望有人可能会觉得这很有用。