web-dev-qa-db-ja.com

バッチファイルの結果をテキストファイルに印刷する

簡単なバッチファイルを作成して、一連のファイル/フォルダーを再編成しました。正常に機能していますが、結果をログファイルに出力する必要があります。各アクションの結果を出力する必要があります(ディレクトリの作成、ファイルの移動、ファイルの名前変更/削除)。 command >> results.txtを使用すると、そこから抜け出すことができるのは「1個のファイルを移動した」だけです。たくさんの時間。コードは次のとおりです。

FOR %%a IN (C:\scans\*.txt) DO CALL :read %%~na
TREE /f >> tree.txt
@GOTO :EOF

:read
@set FILE=%1
FOR /f "tokens=1,2" %%b IN (%FILE%.txt) DO CALL :makeDir %%b %%c
@GOTO :EOF

:makeDir
@set ACCOUNT=%1
@set CHECK=%2
mkdir %ACCOUNT%
CALL :move
@GOTO :EOF

:move
MOVE %FILE%.gif %ACCOUNT%
REN %ACCOUNT%\%FILE%.gif %CHECK%.gif
DEL %FILE%.txt
@GOTO :EOF

アクションが実行されるたびにログファイル(results.txt)に出力するにはどうすればよいですか?

編集:エコー付きの新しいコード:

@echo off
FOR %%a IN (C:\scans\*.txt) DO CALL :read %%~na
TREE /f >> tree.txt
@GOTO :EOF

:read
@set FILE=%1
FOR /f "tokens=1,2" %%b IN (%FILE%.txt) DO CALL :makeDir %%b %%c
@GOTO :EOF

:makeDir
@set ACCOUNT=%1
@set CHECK=%2
mkdir %ACCOUNT%
@echo Made directory for %ACCOUNT% >> results.txt
CALL :move
@GOTO :EOF

:move
MOVE %FILE%.gif %ACCOUNT%
@echo %FILE% moved to %ACCOUNT%
REN %ACCOUNT%\%FILE%.gif %CHECK%.gif
@echo %ACCOUNT%\%FILE% renamed %CHECK% >> results.txt
DEL %FILE%.txt
@echo %FILE% deleted. >> results.txt
@GOTO :EOF
17
Chris V.

次のコードをバッチファイルの先頭に追加できます。

@Echo off
SET LOGFILE=MyLogFile.log
call :Logit >> %LOGFILE% 
exit /b 0

:Logit
:: The rest of your code
:: ....

基本的に、:Logitメソッドの出力をLOGFILEにリダイレクトします。 exitコマンドは、:Logitの実行後にバッチが終了することを確認するためのものです。

19
Radix

標準出力をファイルにリダイレクトしても問題はありません。 moveおよびmkdirコマンドは何も出力しません。これらのコマンドのログ記録が本当に必要な場合は、実行した内容を示す標準出力に明示的にエコーする必要があります。

バッチファイルの例:

@ECHO OFF
cd bob
ECHO I just did this: cd bob

コマンドラインから実行:

myfile.bat >> out.txt

または

myfile.bat > out.txt
15
Stealth Rabbi

テキストファイルへの印刷結果の場合

フォローできます

echo "test data" > test.txt

これにより、test.txtファイルが作成され、「テストデータ」が書き込まれます。

追加する場合

echo "test data" >> test.txt
6
Nikunj K.

ステップ1:必要なコードをすべて「MAIN.BAT」ファイルに入れるだけです。

手順2:別のbatファイル、たとえばMainCaller.batを作成し、次の3行のコードをコピーして貼り付けます。

REM THE MAIN FILE WILL BE CALLED FROM HERE..........
CD "File_Path_Where_Main.bat_is_located"
MAIN.BAT > log.txt

ステップ3:「MainCaller.bat」をダブルクリックするだけです。

すべての出力は、「log」という名前のテキストファイルに記録されます。

バッチファイルの結果をテキストファイルで表示するには、次を使用できます。

このコマンド

chdir > test.txt

このコマンドは、結果をtest.txtにリダイレクトします。

Test.txtを開くと、test.txtにディレクトリの現在のパスが見つかります。

3
Nikunj K.

@echo%FILE%を削除した後、DEL%FILE%.txt%に移動しようとしましたか? >> results.txtのようになりますか?

@echo %FILE% deleted. >> results.txt
DEL %FILE%.txt
0
JohnBatch