Примечание: Этот вопрос похож на вопрос, который я задал 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.
Я помню что-то подобное, когда вы звонили .cmd из другого .cmd Вы пытались добавить «вызов» к началу четвертой строки? –
По-видимому, что-то случилось с дескрипторами 'STDIN' и/или' STDOUT' и/или 'STDERR'. Далее может помочь: 'start" "/ D% DIR% \/WAIT% DIR% \ OFCNSFilter.exe ...' – JosefZ