Domanda

C'è un modo per scorrere uno script .bat? Il fatto è che ho uno script di build, che chiama molti altri script, e mi piacerebbe vedere qual è l'ordine in cui sono chiamati, in modo che io possa sapere esattamente dove devo andare e aggiungere le mie modifiche .

È stato utile?

Soluzione

Non so comunque come eseguire l'esecuzione di un file .bat ma puoi usare echo e pause per aiutare con il debugging.

  

ECHO
  Fa eco un messaggio nel file batch. Come ECHO Hello World stamperà Hello World sullo schermo quando eseguito. Tuttavia, senza @ECHO OFF all'inizio del file batch otterrai anche " ECHO Hello World " e " Hello World. " Infine, se desideri creare una riga vuota, digita ECHO. l'aggiunta del punto alla fine crea una riga vuota.

     

PAUSE
  Chiedi all'utente di premere un tasto qualsiasi per continuare.

Fonte: Guida ai file batch

@ workmad3: la risposta ha altri buoni consigli per lavorare con il comando echo .

Un'altra utile risorsa ... DDB: Suggerimenti file batch DOS

Altri suggerimenti

Assicurati che non ci siano istruzioni "echo off" negli script e chiama "echo on" dopo aver chiamato ogni script per ripristinare quelli che hai perso.

Il motivo è che se l'eco viene lasciato attivo, l'interprete dei comandi emetterà ciascun comando (dopo l'elaborazione dei parametri) prima di eseguirlo. Lo rende davvero brutto per l'utilizzo in produzione, ma molto utile per scopi di debug in quanto puoi vedere dove l'output è andato storto.

Inoltre, assicurati di controllare gli ErrorLevels impostati dagli script e dai programmi batch chiamati. Ricorda che ci sono 2 diversi metodi usati nei file .bat per questo. Se hai chiamato un programma, il livello di errore è in% ERRORLEVEL%, mentre dai file batch il livello di errore viene restituito nella variabile ErrorLevel e non ha bisogno di% in esso.

Di fronte a preoccupazioni simili, ho trovato il seguente strumento con una banale ricerca su Google:

JPSoft's " Assumi comando " include un file batch IDE / debugger. Il loro breve video di presentazione lo dimostra bene.

Sto usando la versione di prova da alcune ore. Ecco la mia prima modesta opinione:

  • Da un lato, infatti, consente il debug degli script .bat e .cmd e ora sono convinto che possa aiutare in alcuni casi
  • D'altra parte, a volte si blocca e ho dovuto ucciderlo ... specialmente durante il debug degli abbonamenti (non sempre sistematicamente) .. non mostra un "call stack" " né un "passo fuori" " pulsante.

Deve provare.

Ho trovato il software 'running steps' (win32) che faceva esattamente quello che stavo cercando: http://www.steppingsoftware.com/

Puoi caricare un file bat, posizionare punti di interruzione / iniziare a passarci attraverso mentre vedi le variabili di output e di ambiente.

La versione di valutazione consente solo di passare attraverso 50 righe ... Qualcuno ha un'alternativa gratuita con funzionalità simili?

rimuovere @ECHO OFF e chiama il tuo file batch reindirizzando TUTTO l'output a un file di registro ..

c: > yourbatch.bat (parametri opzionali) > yourlogfile.txt 2>&1

disponibile su http://www.robvanderwoude.com/battech_debugging.php

FUNZIONA !! non dimenticare il 2 > & amp; 1 ...

WIZ

L'unico modo in cui riesco a pensare è di cospargere il codice con echo se pause s.

Hai provato a reindirizzare il risultato in un file? Come whatever.bat > log.txt

Devi assicurarti che in questo caso ogni altro script chiamato acceda anche al file come > > log.txt

Inoltre, se inserisci una data / T e l'ora / T all'inizio e alla fine di quel file batch, otterrai i tempi in quel momento e potrai mappare il tempo di esecuzione e l'ordine dello script.

O .... Chiama il tuo file .bat principale da un altro file .bat e invia il risultato a un file di risultati, ad esempio

runner.bat > mainresults.txt

Dove runner.bat chiama il file .bat principale

Ora dovresti vedere tutte le azioni eseguite nel file .bat principale

oppure, apri una finestra cmd, quindi chiama il batch da lì, l'output sarà sullo schermo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top