Question Syntaxe de redirection de script par lot


J'ai écrit une réponse un jour avec un exemple de script batch et quelqu'un a fait remarquer qu'il est plus facile de lire la logique écho dans les scripts de commandes, lorsque vous redirigez la sortie vers un fichier, si vous redirigez le fichier commande, texte, etc. (exemples ci-dessous[1]).

Cette suggestion ne mentionnait aucune raison pour laquelle vous ne vouliez pas faire cela, alors j'ai commencé à enquêter un peu car je suis toujours à la recherche de méthodes natives pour garder les choses plus propres.


Exemple de manière habituelle

IF EXIST "%tmpfile%" DEL /Q /F "%tmpfile%"
ECHO Some Text Here>>"%tmpfile%"
ECHO A little more text here>>"%tmpfile%"
ECHO Some other text over here man>>"%tmpfile%"
ECHO Can Scooby please have a Scooby snack>>"%tmpfile%"

Exemple de lecture plus facile

IF EXIST "%tmpfile%" DEL /Q /F "%tmpfile%"
ECHO>>"%tmpfile%" Some Text Here
ECHO>>"%tmpfile%" A little more text here
ECHO>>"%tmpfile%" Some other text over here man
ECHO>>"%tmpfile%" Can Scooby please have a Scooby snack

Evidemment c'est beaucoup Plus facile lire la logique à partir de scripts de commandes avec ECHO commandes dans ce format mais il y aurait un problème si il y avait des pièges en utilisant cette méthode en tant que norme dans les scripts de commandes.

J'ai regardé sur Internet quelques-uns et le plus que j'ai pu trouver était la source référencée ci-dessous indiquant n'utilisez pas cette technique dans les lignes de commande qui contiennent également d'autres redirections[2].


Question

Cette question peut concerner les experts en script batch Windows ou quelqu'un qui utilise cette méthode depuis un certain temps ou qui a effectué des tests rigoureux, mais. . . 

  1. autre que le seul problème (redirection multiple[2]) pour ne pas utiliser cette syntaxe, y a-t-il d'autres problèmes, raisons ou pièges à prendre en considération?

Les références

  • Redirection[1]

    • NOTES: (3)

      Les redirections vers un ou plusieurs fichiers ont tendance à rendre les fichiers batch difficiles à   lis. Parfois, les lignes peuvent être remplies d'espaces pour aligner tout   panneaux de redirection et rendre le fichier de commandes plus lisible.

      Cependant, si vous deviez le faire avec les lignes de commande ECHO, les espaces   serait vraiment ECHO, ce qui n'est pas toujours pratique, pour dire le   moins.

      Sur Le site web de Marc Stern j'ai trouvé un   excellente solution: placez simplement les redirections avant le réel   commandes.

      Prenez ce fichier batch imaginaire, par exemple:

      ECHO Directory of all files on C: >> LOG1.LOG 

      DIR C:\ /S >> LOG1.LOG

      Pas vraiment facile pour les yeux, celui-là?

      Qu'en est-il de celui-là, alors?

      >> LOG1.LOG ECHO Directory of all files on C:

      >> LOG1.LOG DIR C:\ /S

      Cela fera exactement la même chose, pas de différence! Beaucoup mieux, n'est-ce pas? Mais   maintenant, essayez ceci:

      VER | TIME > LOG1.LOG  > LOG1.LOG VER | TIME

      Comme vous le remarquerez, dans la deuxième ligne, c'est la sortie de VER qui   est redirigé vers LOG1.LOG !! En règle générale: ne pas utiliser cette   technique dans les lignes de commande qui contiennent également d'autres redirections.

    la source


4
2017-07-31 01:40


origine


Pourquoi supprimez-vous "%tmpfile%" immédiatement après lui avoir écrit? Vous pourriez aussi bien ne pas s'embêter avec le echoc'est :) - DavidPostill♦
@DavidPostill J'ai pris l'autre logique des exemples qui fonctionneraient avant mais bon point. - Pimp Juice IT
Veuillez noter que "plus facile à lire" n'est pas lié à "plus facile à comprendre". Ce que vous avez décrit fonctionne, mais c’est une fonctionnalité assez obscure, je ne l’utiliserais pas, car cela risque d’embrouiller d’autres personnes qui lisent votre script. Autre que cela et ce que vous avez déjà souligné, je ne connais pas d’autres problèmes. Je recommanderais la réponse de @David Postrill, à défaut de cela - alignez simplement le texte avec des tabulations ou des espaces - ce n'est pas une solution géniale mais du moins pas compliquée. - Jack White


Réponses:


Je suis toujours à la recherche de méthodes natives pour garder les choses plus propres.

Voici une autre alternative, qui (pour moi) est encore plus lisible:

(
ECHO Some Text Here
ECHO A little more text here
ECHO Some other text over here man
ECHO Can Scooby please have a Scooby snack
)>>"%tmpfile%"

Il est également plus facile à maintenir, car il est beaucoup plus facile d'activer / désactiver la redirection si nécessaire, car cela se fait au même endroit.


5
2017-07-31 09:31