2012-05-21 4 views
2

У меня есть командный файл, который выполняет ряд команд. По мере выполнения каждого из них он возвращает сообщение «успех» или «отказ». Его достаточно просто перенаправить вывод из каждого из них с помощью >> и отправить его в файл, но без соответствующей команды вывод бесполезен.Перенаправление вывода из командного файла, ВКЛЮЧАЯ команды

(Batch File)

Command "D21" >> Myfile.txt 
Command "D22" >> Myfile.txt 
Command "D23" >> Myfile.txt 
Command "D24" >> Myfile.txt 

(Выходной файл: Myfile.txt)

Fail 
Succeed 
Fail 
Succeed 

То, что я хотел бы сделать также отправить команду, которая была выполнена для этого файла, так что может выглядеть так ...

(Заданный выходной файл: myfile.txt)

Command "D21" Fail 
Command "D22" Fail 
Command "D23" Succeed 
Command "D24" Succeed 

Любые мысли о том, как я мог бы выполнить это с минимальными усилиями?

+0

Добро пожаловать в StackOverflow. Пожалуйста, уделите время, отправляя сообщения, чтобы правильно форматировать свой код. Вы можете сделать это, вставив по крайней мере четыре пробела или выбрав весь код и нажав кнопку на панели инструментов с фигурными фигурными скобками ('{}') или нажав Ctrl + K. Вы можете просмотреть свой пост при вводе его в стиле WYSIWYG непосредственно под текстовым полем, чтобы вы могли правильно форматировать его в реальном времени перед публикацией. Кроме того, избегайте использования подписей в ваших сообщениях; у вас есть страница профиля, связанная с вашей учетной записью, которая позволяет публиковать личную информацию, такую ​​как ваше имя. Благодарю. :) –

ответ

2

Предполагаю, что вы хотите выборочно перенаправлять эховые команды и выводить их внутри партии, а не целую партию.

@echo off 
echo before not echoed, not captured 
call :echoCommands >myFile.txt 
echo after not echoed, not captured 
exit /b 

:echoCommands 
echo on 
Command "D21" 
Command "D22" 
Command "D23" 
Command "D24" 
@echo off 
exit /b 

Если вы хотите, чтобы захватить весь пакетный файл, а затем просто удалить перенаправление из сценария, не превращайте эхо от, и перенаправлять при вызове пакетного сценария.

myScript >myFile.txt 

Если вы хотите, чтобы захватить весь вывод файла с командами, и вы действительно хотите, чтобы перенаправить в сценарии, а затем что-то вроде

@if "%~1" neq "_GO_" (
    >myFile.txt call "%~f0" _GO_ %* 
    exit /b 
) 
@echo on 
Command "D21" 
Command "D22" 
Command "D23" 
Command "D24" 

Во всех приведенных выше решений, каждая команда будет напечатанный на одной строке, и вывод будет следовать на следующей строке (строках).

0

Это способ поставить команду и ответ на той же линии

@echo off 
for /f "skip=6 delims=" %%i in (%~dpnx0) do (
    <nul set /p =%%i >> MyFile.txt 
    %%i >> MyFile.txt 
) 
goto :eof 
Command "D21" 
Command "D22" 
Command "D23" 
Command "D24" 
0

Есть два способа сделать это. Первым немного «загадочным», но он получает это сделано в команде одной строки:

for %%f in ("Command "D21"" "Command "D22"" "Command "D23"" "Command "D24"") do for /F "usebackq delims=" %%g in (`%%~f`) do echo %%~f %%g >> MyFile.txt 

Это должно работать нормально. Добавить комментарий Command "xxx".

Второй способ заключается в использовании «подпрограммы», чтобы справиться с работой:

@echo off 

call :work Command "D21" 
call :work Command "D22" 
call :work Command "D23" 
call :work Command "D24" 
goto :EOF 



:work 
for /F "usebackq delims=" %%g in (`%*`) do echo %* %%g 
goto :EOF 
Смежные вопросы