2

一連のコマンドを実行するバッチ ファイルがあります。それぞれが実行されると、「成功」または「失敗」のメッセージが返されます。>>を使用してこれらのそれぞれからの出力をリダイレクトし、ファイルに送信するのは簡単ですが、関連するコマンドがなければ出力は役に立ちません。

(バッチファイル)

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

最小限の労力でこれを達成する方法について何か考えはありますか?

4

3 に答える 3

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"

上記のすべてのソリューションで、各コマンドは 1 行に出力され、出力は次の行に続きます。

于 2012-05-22T00:52:01.120 に答える
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"
于 2012-05-24T18:59:55.217 に答える