簡単なバッチファイルを作成して、一連のファイル/フォルダーを再編成しました。正常に機能していますが、結果をログファイルに出力する必要があります。各アクションの結果を出力する必要があります(ディレクトリの作成、ファイルの移動、ファイルの名前変更/削除)。 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
次のコードをバッチファイルの先頭に追加できます。
@Echo off
SET LOGFILE=MyLogFile.log
call :Logit >> %LOGFILE%
exit /b 0
:Logit
:: The rest of your code
:: ....
基本的に、:Logit
メソッドの出力をLOGFILE
にリダイレクトします。 exit
コマンドは、:Logit
の実行後にバッチが終了することを確認するためのものです。
標準出力をファイルにリダイレクトしても問題はありません。 moveおよびmkdirコマンドは何も出力しません。これらのコマンドのログ記録が本当に必要な場合は、実行した内容を示す標準出力に明示的にエコーする必要があります。
バッチファイルの例:
@ECHO OFF
cd bob
ECHO I just did this: cd bob
コマンドラインから実行:
myfile.bat >> out.txt
または
myfile.bat > out.txt
テキストファイルへの印刷結果の場合
フォローできます
echo "test data" > test.txt
これにより、test.txtファイルが作成され、「テストデータ」が書き込まれます。
追加する場合
echo "test data" >> test.txt
ステップ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にディレクトリの現在のパスが見つかります。
@echo%FILE%を削除した後、DEL%FILE%.txt%に移動しようとしましたか? >> results.txtのようになりますか?
@echo %FILE% deleted. >> results.txt
DEL %FILE%.txt