Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 批处理脚本执行不正确_C#_.net_Batch File_Cmd_Windows Server 2003 - Fatal编程技术网

C# 批处理脚本执行不正确

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&

注意:这个问题与我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>
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…