批处理脚本执行不正确

Incorrect batch script execution

注意:这个问题和我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 命令未执行。但是,如果我回显 %ERRORLEVEL%,则它为 0(0=成功,1=失败)。很明显,该程序实际上是 运行,因为创建了 outfile.xml。

这是我更加困惑的地方。如果我 运行 它一次,我得到上面的输出。但是,如果我在同一个命令 window 中多次尝试 运行 它,我会得到以下输出:

U:\sendToJeff>testscript.bat
Starting list filter...

U:\sendToJeff>testscript.bat

U:\sendToJeff>

有没有人以前在批处理脚本中见过这种行为?我将不胜感激有关如何解决此问题的任何见解。如果有帮助,我还会使用 System.Xml.Linq 库。

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