批处理脚本执行不正确

时间:2015-02-11 16:02:05

标签: c# .net batch-file cmd windows-server-2003

注意:这个问题类似于我在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库。

1 个答案:

答案 0 :(得分:0)

我终于明白了。在程序的过去迭代中,我正在将数据输出到控制台。此数据采用UTF8编码,因此我必须执行Console.OutputEncoding = System.Text.Encoding.UTF8;才能正确打印数据。虽然这可以在我的机器和运行Windows Server 2012 R2的服务器上运行,但我想在Windows Server 2003上有这样的问题。只需删除该行代码即可解决所有问题。因此,这最终成为一个C#/ VB.NET问题,而不是批处理脚本,但我希望有人可能会觉得这很有用。