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?

TMRW
la source

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.

Levans
la source
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.

Vlastimil Ovčáčík
la source
1
merci, m'a évité les tracas d'avoir à créer un wrapper
AdrianBR