代码之家  ›  专栏  ›  技术社区  ›  Disco Globeulon

批处理脚本执行不正确

  •  0
  • Disco Globeulon  · 技术社区  · 11 年前

    注意:这个问题与我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 回复  |  直到 11 年前
        1
  •  0
  •   Disco Globeulon    11 年前

    我终于想通了。在过去的程序迭代中,我向控制台输出数据。这个数据是UTF8编码的,所以我不得不这样做 Console.OutputEncoding = System.Text.Encoding.UTF8; 以便正确打印数据。虽然这在我的计算机和运行Windows server 2012 R2的服务器上运行,但我想在Windows server 2003上执行这一操作时存在问题。只需删除这行代码即可修复所有问题。因此,与批处理脚本相比,这更像是一个C#/VB.NET问题,但我希望有人会觉得这很有用。