8
votes

Y a-t-il un moyen de suivre l'exécution d'un fichier de commandes?

J'ai hérité de grands fichiers de lots et j'aimerais les réécrire à une langue plus "développeuse conviviale".

J'aimerais connaître les choses suivantes:

  • Quels autres scripts cela appelle
  • Quels autres processus il commence
  • Quels fichiers écrit-il à
  • Quelles variables d'environnement il utilise, que celles-ci définissent

    Pour le dernier point, je suis au courant que je puisse faire cela avant de commencer: xxx

    et après mon fonctionnement, je peux le faire: xxx

    et juste faire une difforme entre eux ... mais je vais manquer des variables qui peuvent être déséquiées lorsque le script se termine (ou même tous si le script est a couru sous setLocal ).

    Y a-t-il un moyen de trouver toutes ces choses sans moi ajouter des tonnes d'instructions d'écho tout au long du code de script? Y a-t-il un tel outil capable de surveiller le processus lancé par le fichier de commandes et de me dire tout ce qu'il faisait?


4 commentaires

Réécrivez-les dans PowerShell. Il a des capacités de débogage. Vous pouvez également utiliser l'excellent produit «PowerShell Plus» depuis Idera et obtenir une expérience de débogage interactive.


@John: Je pense que le problème de l'OP était plus de comprendre ce que le fichier de commandes DOD doit y réécrire dans une autre langue. Donc, vous faites un peu le même point :)


Vous pouvez obtenir une partie de ces informations à partir du moniteur de processus TechNet.microsoft.com/fr- US / Sysinternals / BB896645.aspx , mais comme pour le reste. J'espère que vous trouverez quelque chose, mais je ne suis pas optimiste.


Je comprends ce que fait le lot, et si je le lisais, je suis capable de le reproduire, mais je pensais à un outil qui rapporte autant de ces choses que possible.


4 Réponses :


2
votes

Vous pouvez simplement regarder en eux et comprendre ce qu'ils font.

Vous pouvez également supprimer tout Echo Off instructions et @ commandes précédentes; Ainsi, chaque commande est sortie avant son exécution et vous pouvez rediriger la sortie dans un fichier pour l'étudier plus tard.

Il n'y a pas d'outil de débogage pour les fichiers par lots que je suis au courant, mais j'ai envisagé d'écrire une une fois.


2 commentaires

Oui, mais je devrais m'assurer que tous les autres scripts sont appelés, ne pas avoir le echo off . Je pense à la même chose à propos de l'outil :)


@Geo: Le problème avec un tel outil serait que vous devez modéliser avec précision le comportement de CMD. Et vous ne pouvez pas simplement exécuter les lignes un-par-un en cmd car cela a souvent des résultats différents que lorsqu'il est exécuté à partir d'un fichier de lot, une approche naïve échouerait probablement. Bien que je pense avoir une idée que pourrait travailler, vous écrivez simplement un autre fichier de commandes, contenant une instruction Pause après chaque ligne ainsi que de rédiger l'environnement complet dans un fichier pour le débogueur à saisir. Pourrait ne pas être trop jolie et garder une trace des fichiers ouverts est un autre problème entièrement. Le moniteur de processus était une belle pointe, bien que



1
votes

Non, il n'y a aucun moyen de déboguer des fichiers de batch de style ancien. Vous pouvez toutefois simplement vous débarrasser de tous les énoncés echo erfo er , puis toutes les commandes et la sortie seront écho à la console lorsque vous les exécutez.


1 commentaires

Toute ligne commençant par @ ne sera pas écho



1
votes

Si vous êtes prêt à dépenser de l'argent, vous devez jeter un coup d'œil sur le Évaluation des étapes IDE de fichier batch et ses capacités de débogage.

Je ne l'ai pas testé, mais cela a des fonctionnalités qui pourraient vous aider dans votre tâche:

...

  • environnement de débogage de studio visuel.
  • Ensemble riche de commandes de débogage (entrez-vous, étape, pas, sortez et plus)
  • Analyseur de projet riche pour trouver vos erreurs et vos avertissements en un rien de temps.
  • Prise en charge intégrée pour un environnement élargi retardé variables.
  • Définitions de points d'arrêt multi-types pour adapter vos multiples besoins de débogage.
  • Support complexe de pipeline et de redirection avec la surbrillance multicolore.
  • Support de visualisation et de modification de la variable d'environnement.
  • Fenêtre d'informations étendue pour une véritable visualisation de définition variable.
  • Impressionnant «Pour commandement». Caractéristique déroulante.
  • Fenêtre de paramètres et paramètres interactifs.

    ...

    Ils offrent également une version d'essai.


1 commentaires

Le lien des étapes en cours d'exécution est maintenant défunt - pointe vers un site portail.



2
votes

Il n'y a pas de mauvaise façon de le faire. Mais il n'est pas impossible de créer un. Strong>

puisque Windows XP / Vista / 7 est sorti de l'ensemble Good'Ore de commandes DOS Batch a été considérablement mis à niveau, bien que cela n'utilise pas beaucoup les utilise ou même la RTFM ( Pour /? Code>?) P>

Alors, ici, je vous donne un simple traceur pure-lot qui utilise le commutateur pour / f code> interrupteur d'analyse de ligne: P>

@ECHO OFF

ECHO Hello World! 
SET aaa=1
SET bbb=2

ECHO Doing step 2
SET aaa=
SET ccc=3

ECHO Doing step 3
SET bbb=
SET ccc=

ECHO Finished!


0 commentaires