2009-02-19 4 views
1

Nous avons des fichiers de chauves-souris complexes où l'on appelle un autre, qui en appelle un autre. Tous ont un @echo off en haut. Pour le débogage, je voudrais activer sélectivement l'écho dans certains d'entre eux. Quelle est la manière la plus simple de faire ça? Quelques idées que j'ai jusqu'à présent:Comment atteindre le paramètre d'activation/désactivation de l'écho par fichier batch?

  • Modifiez le paramètre uniquement dans les fichiers de niveau supérieur. Mais cela ne fonctionnera que pour les quelques fichiers connus pour ne pas être de niveau supérieur. Sinon, n'importe quel fichier peut en appeler un autre.

  • Retournez au réglage précédent avant de quitter chaque fichier bat. Je devrai m'assurer qu'il y a un seul point de sortie. Je vais aussi avoir besoin de connaître le réglage à l'entrée, que je ne sais pas comment trouver.

Merci d'avance.

Répondre

1

Appelez le echo on au début des fichiers que vous souhaitez activer et leurs dépendances (et echo off à la fin si vous le souhaitez).

Remarque: Vous avez dit que c'est pour le débogage, donc il n'est pas nécessaire de suivre un grand schéma - il doit juste produire des résultats pour le moment.

... à moins que je ne manque quelque chose, bien sûr.


Vous pouvez aussi écrire un script rapide pour REM sur les appels d'écho. Pour chaque fichier pour lequel vous voulez avoir un écho, faites une recherche textuelle pour ".bat" pour obtenir la liste des dépendances. Puis exécutez le script REMming sur eux et recherchez ceux pour ".bat", rinse-repeat. Une autre option est que si cela ne vous dérange pas de voir toutes les sorties, il suffit de charger tous les fichiers via le script REMming. C'est un peu plus facile que de chercher récursivement des dépendances. Ensuite, mettez une grande commande ECHO flagrante au début et à la fin de la section que vous voulez tracer. Chargez la sortie entière dans le bloc-notes et recherchez votre signet.


Pour référence, si vous exécutez simplement la commande ECHO sans aucun paramètre, vous pouvez voir le réglage d'écho actuel: «ECHO est on | off ».

+0

Ceci est similaire à la deuxième option que je mentionne, sauf qu'il ne restaure pas au réglage précédent à la fin, de sorte que l'écho est désactivé lorsque le contrôle retourne à l'appelant. Cela ne fonctionne pas. –

+0

Merci pour votre aide, il semble que je vais devoir faire écho partout. –

+0

Désolé je ne pouvais pas trouver quelque chose de mieux ... –

2

Que diriez-vous:

@if defined talk (echo on) else (echo off) 

en haut de chaque fichier. Ensuite, vous pouvez définir TALK = True et les lancer tous en même temps. Pour ce faire, sélectionnez TALK_XYZ, par exemple, et vous devrez vous assurer que tous les jeux de fichiers par lots renvoient l'écho avant de quitter. Cela devrait probablement être fait par un « GOTO END » de tous les points de sortie:

... 
:END 
@echo off 
+0

J'ai fatigué cette approche.Le problème est que je veux * sélectivement * activer la connexion dans certains fichiers, pas tous. Sinon, la sortie est énorme. –

Questions connexes