2015-02-11 3 views
0

Примечание: Этот вопрос похож на вопрос, который я задал 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% 

При запуске в ЦМД, я получаю следующий результат:

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

U:\sendToJeff> 

OFCNSFilter.exe является программа .NET, 3,5 (написанный на C#) работает на Windows Server 2003 R2 Standard x64 Edition SP2. Обратите внимание, что вторая команда ECHO не выполняется. Однако, если I ECHO% ERRORLEVEL%, это 0 (0 = успех, 1 = сбой). Также очевидно, что программа действительно работает, потому что создается файл outfile.xml.

Здесь я еще больше запутался. Если я запускаю его один раз, я получаю вышеупомянутый вывод. Однако, если я пытаюсь запустить его несколько раз в том же окне CMD, я получаю следующий вывод:

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

U:\sendToJeff>testscript.bat 

U:\sendToJeff> 

Кто-нибудь когда-нибудь видел такое поведение в пакетном сценарии раньше? Буду признателен за то, как это исправить. Если это помогает, я также использую библиотеку System.Xml.Linq.

+0

Я помню что-то подобное, когда вы звонили .cmd из другого .cmd Вы пытались добавить «вызов» к началу четвертой строки? –

+0

По-видимому, что-то случилось с дескрипторами 'STDIN' и/или' STDOUT' и/или 'STDERR'. Далее может помочь: 'start" "/ D% DIR% \/WAIT% DIR% \ OFCNSFilter.exe ...' – JosefZ

ответ

0

Я, наконец, понял это. В прошлой итерации программы я выводил данные на консоль. Эти данные были закодированы в кодировке UTF8, поэтому мне нужно было сделать Console.OutputEncoding = System.Text.Encoding.UTF8; для правильной печати данных. Хотя это работало на моей машине и на сервере под управлением Windows Server 2012 R2, я думаю, что есть проблема с Windows Server 2003. Простое удаление этой строки кода исправило все. Таким образом, это закончилось тем, что было больше вопросов C#/VB.NET, чем пакетный скриптинг, но я надеюсь, что кто-то найдет это полезным.

 Смежные вопросы

  • Нет связанных вопросов^_^