Ich habe eine einfache Batchdatei erstellt, um eine Reihe von Dateien/Ordnern neu zu organisieren. Es funktioniert so, wie es sollte, aber ich muss die Ergebnisse in eine Protokolldatei drucken. Ich muss die Ergebnisse jeder Aktion ausgeben (Erstellen eines Verzeichnisses, Verschieben einer Datei, Umbenennen/Löschen einer Datei). Wenn ich command >> results.txt verwende, kann ich nur "1 Datei (en) verschoben" bekommen. eine Tonne mal. Hier ist der Code:
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
Wie kann ich in die Protokolldatei (results.txt) drucken, wenn eine Aktion ausgeführt wird?
BEARBEITEN: neuer Code mit Echos:
@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
Sie können diesen Code oben in Ihre Batchdatei einfügen:
@Echo off
SET LOGFILE=MyLogFile.log
call :Logit >> %LOGFILE%
exit /b 0
:Logit
:: The rest of your code
:: ....
Sie leitet die Ausgabe der :Logit
-Methode grundsätzlich auf die LOGFILE
um. Der Befehl exit
soll sicherstellen, dass der Stapel nach der Ausführung von :Logit
beendet wird.
Es gibt nichts Falsches bei der Umleitung des Standards in eine Datei. Die Befehle Move und mkdir geben nichts aus. Wenn Sie wirklich eine Protokollspur dieser Befehle benötigen, müssen Sie explizit den Standard anzeigen, um anzuzeigen, was Sie gerade ausgeführt haben.
Die Batchdatei, Beispiel:
@ECHO OFF
cd bob
ECHO I just did this: cd bob
Führen Sie von der Befehlszeile aus:
myfile.bat >> out.txt
oder
myfile.bat > out.txt
Für Ergebnis in Textdatei drucken
wir können folgen
echo "test data" > test.txt
Dadurch wird eine test.txt-Datei erstellt und "Testdaten" geschrieben.
Wenn Sie dann anhängen möchten
echo "test data" >> test.txt
Schritt 1: Fügen Sie einfach den erforderlichen Code in eine "MAIN.BAT" -Datei ein.
Schritt 2: Erstellen Sie eine weitere Bat-Datei, beispielsweise MainCaller.bat, und kopieren Sie diese drei Codezeilen:
REM THE MAIN FILE WILL BE CALLED FROM HERE..........
CD "File_Path_Where_Main.bat_is_located"
MAIN.BAT > log.txt
Schritt 3: Doppelklicken Sie einfach auf "MainCaller.bat".
Alle Ausgaben werden in der Textdatei mit dem Namen "log" protokolliert.
Um das Ergebnis einer Batchdatei in einer Textdatei anzuzeigen, können Sie verwenden
dieser Befehl
chdir > test.txt
Dieser Befehl leitet das Ergebnis an test.txt weiter.
Wenn Sie test.txt öffnen, finden Sie den aktuellen Pfad des Verzeichnisses in test.txt
Haben Sie versucht, DEL% FILE% .txt% nach @echo% FILE% zu verschieben. >> ergebnis.txt damit es so aussieht?
@echo %FILE% deleted. >> results.txt
DEL %FILE%.txt