Vider la sortie du script batch dans un fichier texte sans spécifier au préalable l'emplacement du fichier batch


11

Je suis conscient que je peux obtenir la sortie de cette façon (pour capturer à la fois la norme et les erreurs):

[batchFilePath] > [logFilePath] 2>&1

Ou de cette façon pour une sortie standard:

C:\MyBatchFile.bat > output.txt

Mais existe-t-il un moyen de le faire sans spécifier l'emplacement du fichier de commandes lui-même?

Par exemple, supposons que je lance (il suffit de double-cliquer pour exécuter) C: \ MyFolder \ MyBatch.cmd et après avoir quitté le fichier de commandes (ou il se termine), je peux trouver la sortie dans C: \ MyFolder \ MyBatch.txt

Si oui, quel code devrais-je inclure dans le fichier batch lui-même?

Réponses:


6

La seule solution à laquelle je pense est d'ajouter >> output.txtà la fin de chaque commande une sortie de quelque chose de votre fichier batch. Il ajoutera la sortie de votre fichier à la fin deoutput.txt

Ou créer un deuxième fichier de commandes dont le contenu serait .\MyBatchFile.bat > output.txt.


12

Mettez vos commandes entre parenthèses. MyBatchFile.bat:

@echo off
REM setlocal enabledelayedexpansion

(
  echo line one
  echo line two
  echo line three
) > "%~dpn0.txt"

Les variables à l'intérieur des crochets sont évaluées en une seule fois lorsqu'elles (sont rencontrées. Utilisez enabledelayedexpansionpour retarder l'évaluation.


1
merci, m'a évité les tracas d'avoir à créer un wrapper
AdrianBR
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.