web-dev-qa-db-fra.com

Impression des résultats d'un fichier de commandes dans un fichier texte

J'ai créé un simple fichier de commandes pour réorganiser un ensemble de fichiers/dossiers. Cela fonctionne comme il se doit, mais je dois imprimer les résultats dans un fichier journal. J'ai besoin de sortir les résultats de chaque action (créer un répertoire, déplacer un fichier, renommer/supprimer un fichier). Lorsque j'utilise command >> results.txt tout ce que je peux en retirer est "1 fichier (s) déplacé (s)". une tonne de fois. Voici le 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

Comment puis-je imprimer dans le fichier journal (results.txt) chaque fois qu'une action est effectuée?

EDIT: nouveau code avec échos:

@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.

Vous pouvez ajouter ce morceau de code en haut de votre fichier de commandes:

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

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

En gros, il redirige la sortie de la méthode :Logit vers la LOGFILE. La commande exit permet d’assurer la fermeture du lot après l’exécution de :Logit.

19
Radix

Il n'y a rien de mal à rediriger la sortie standard vers un fichier. Les commandes Move et mkdir ne génèrent rien. Si vous avez vraiment besoin d'une trace de journal de ces commandes, vous devrez explicitement afficher l'écho en sortie standard en indiquant ce que vous venez d'exécuter.

Le fichier batch, exemple:

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

Exécuter en ligne de commande:

myfile.bat >> out.txt

ou

myfile.bat > out.txt
15
Stealth Rabbi

Pour imprimer le résultat dans un fichier texte 

on peut suivre 

echo "test data" > test.txt

Cela va créer un fichier test.txt et écrit "test data"

Si vous voulez ajouter alors 

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

Étape 1: Il suffit de mettre tout le code requis dans un fichier "MAIN.BAT".

Étape 2: Créez un autre fichier bat, dites MainCaller.bat, et copiez/collez simplement ces 3 lignes de code:

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

Étape 3: Double-cliquez sur "MainCaller.bat".

Tous les résultats seront consignés dans le fichier texte nommé "log".

Pour afficher le résultat du fichier de commandes dans un fichier texte, vous pouvez utiliser

cette commande

chdir > test.txt

Cette commande redirigera le résultat vers test.txt.

Lorsque vous ouvrez test.txt, vous trouverez le chemin actuel du répertoire dans test.txt.

3
Nikunj K.

Avez-vous essayé de déplacer DEL% FILE% .txt% après @echo% FILE% supprimé. >> resultats.txt afin qu'il ressemble à ceci?

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