C# 批处理脚本执行不正确
注意:这个问题与我4个月前提出的问题类似,但不是同一个问题。C# 批处理脚本执行不正确,c#,.net,batch-file,cmd,windows-server-2003,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&
我有以下批处理脚本:
@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>
U:\sendToJeff>testscript.bat
Starting list filter...
U:\sendToJeff>testscript.bat
U:\sendToJeff>
OFCNSFilter.exe是一个.NET 3.5程序(用C#编写),运行在Windows Server 2003 R2标准x64版SP2上。请注意,没有执行第二个ECHO
命令。但是,如果我回显%ERRORLEVEL%,则为0(0=成功,1=失败)。很明显,程序实际上是因为创建了outfile.xml而运行的
这是我更加困惑的地方。如果我运行一次,就会得到上面的输出。但是,如果我尝试在同一个cmd窗口中多次运行它,则会得到以下输出:
U:\sendToJeff>testscript.bat
Starting list filter...
U:\sendToJeff>
U:\sendToJeff>testscript.bat
Starting list filter...
U:\sendToJeff>testscript.bat
U:\sendToJeff>
以前有人在批处理脚本中见过这种行为吗?如果您能提供有关如何解决此问题的任何见解,我将不胜感激。如果有帮助的话,我还利用了System.Xml.Linq库。我终于找到了答案。在程序的上一次迭代中,我将数据输出到控制台。这个数据是UTF8编码的,所以我必须执行
Console.outpunecoding=System.Text.Encoding.UTF8代码>以便正确打印数据。虽然这在我的机器上和运行WindowsServer2012 R2的服务器上都有效,但我想在WindowsServer2003上这样做会有问题。只需删除那行代码就可以修复所有问题。因此,与批处理脚本相比,这更像是一个C#/VB.NET问题,但我希望有人会发现这很有用 我记得从另一个.cmd调用.cmd时发生了类似的情况。您是否尝试将“call”添加到第四行的开头?显然,STDIN
和/或STDOUT
和/或STDERR
句柄有问题。下一步可能会有帮助:start”“/D%DIR%\/WAIT%DIR%\OFCNSFilter.exe…