Vraag Hoe kan ik een .BAT-script debuggen?


Is er een manier om door een .bat-script te stappen? Het punt is, ik heb een build-script, dat veel andere scripts oproept, en ik zou graag willen weten wat de volgorde is waarin ze worden genoemd, zodat ik weet waar ik precies naartoe moet gaan en mijn wijzigingen moet toevoegen .


77
2017-10-03 06:46


oorsprong


antwoorden:


Ik weet het hoe dan ook niet om de uitvoering van een .bat-bestand te doorlopen, maar je kunt het gebruiken echo en pause om te helpen met debugging.

ECHO
  Zal een bericht in het batchbestand echoën. Zoals ECHO Hello World zal Hello World op het scherm afdrukken als het wordt uitgevoerd. Echter, zonder @ECHO OFF aan het begin van het batchbestand krijgt u ook "ECHO Hello World" en "Hello World." Als u tenslotte een lege regel wilt maken, typt u ECHO. door de punt aan het einde toe te voegen, wordt een lege regel gemaakt.

PAUZE
  Vraag de gebruiker om op een willekeurige toets te drukken om door te gaan.

Bron: Batch File Help

@ workmad3: antwoord heeft meer goede tips voor het werken met de echo opdracht.

Nog een nuttige hulpbron ... DDB: DOS Batch File Tips


63
2017-10-03 06:50



Zorg ervoor dat er geen 'echo off'-instructies in de scripts staan ​​en roep' echo on 'aan nadat je elk script hebt gecalld om te resetten dat je hebt gemist.

De reden is dat als de echo aan blijft staan, de opdrachtinterpreter elke opdracht (na de parameterverwerking) uitvoert voordat deze wordt uitgevoerd. Zorgt ervoor dat het er slecht uitziet voor gebruik in de productie, maar is zeer nuttig voor het opsporen van fouten, omdat u kunt zien waar de uitvoer fout is gegaan.

Zorg er ook voor dat u de ErrorLevels controleert die zijn ingesteld door de opgeroepen batch-scripts en programma's. Vergeet niet dat hiervoor 2 verschillende methoden worden gebruikt in .bat-bestanden. Als u een programma hebt aangeroepen, bevindt het foutniveau zich in% ERRORLEVEL%, terwijl van batchbestanden het foutniveau wordt geretourneerd in de variabele ErrorLevel en%'s eromheen niet nodig is.


15
2017-10-03 06:52



Tegenover vergelijkbare bezorgdheid vond ik de volgende tool met een triviale Google-zoekopdracht:

JPSoft's "Neem het bevel"bevat een batchbestand IDE / debugger korte presentatievideo demonstreert het mooi.

Ik gebruik de proefversie sinds een paar uur. Hier is mijn eerste bescheiden mening:

  • Aan de ene kant staat het inderdaad debugging .bat en .cmd scripts toe en ik ben er nu van overtuigd dat het in een aantal gevallen kan helpen
  • Aan de andere kant blokkeert het soms en ik moest het doden ... speciaal bij het debuggen van subscripts (niet altijd systematisch) .. het laat geen "call stack" noch een "step out" knop zien.

Het probeert het uit.


9
2017-11-20 12:01



Ik vond 'running steps' (win32) software die precies deed wat ik zocht: http://www.steppingsoftware.com/

U kunt een bat-bestand laden, breekpunten plaatsen / beginnen er doorheen te stappen terwijl u de uitvoer- en omgevingsvariabelen ziet.

De evaluatieversie maakt het alleen mogelijk om 50 regels te doorlopen ... Heeft iemand een gratis alternatief met vergelijkbare functionaliteit?


7
2017-08-18 12:11



rem de @ECHO OFF uit en roep je batchbestand doorverwijzing in ALLE uitvoer naar een logbestand ..

c:> yourbatch.bat (optionele parameters)> yourlogfile.txt 2> & 1

gevonden bij http://www.robvanderwoude.com/battech_debugging.php

HET WERKT!! vergeet niet de 2> & 1 ...

WIZ


5
2017-08-22 16:01



De enige manier die ik kan bedenken is de code spinkle echos en pauses.


2
2017-10-03 06:49



Heb je geprobeerd het resultaat om te leiden naar een bestand? Like whatever.bat> log.txt

Je moet ervoor zorgen dat in dit geval elk ander genaamd script zich ook aanmeldt bij het bestand zoals >> log.txt

Ook als u een datum / T en tijd / T in het begin en aan het einde van dat batchbestand plaatst, krijgt u de tijden dat het op dat moment was en kunt u de looptijden en de volgorde van uw script in kaart brengen.


2
2017-10-03 06:50



Of.... Roep je hoofdbestand .bat op vanuit een ander .bat-bestand en voer het resultaat uit naar een resultaatbestand, d.w.z.

runner.bat> mainresults.txt

Waar runner.bat het belangrijkste .bat-bestand aanroept

U zou nu alle uitgevoerde acties in het hoofdbat-bestand moeten zien


1
2017-11-27 16:29



Dit is de juiste ansver.

command /y /C   myfile.bat

of     command / y / k myfile.bat / y Doorloopt het batchprogramma gespecificeerd door / C of / K. (Alleen beschikbaar in MS-DOS 6.x en hoger). / c Doorloopt het batch-programma gespecificeerd door / C of / K. (Alleen beschikbaar in MS-DOS 6.x en hoger).

U wilt misschien andere parameters, zoals / z voor toevoegen

Werkt niet voor systemen onder dos 6 of hoger windows 98. Ik denk ook niet dat het werkt voor Windows nt vóór 2000..

Ik heb msdos 7.1 in virtualbox geïnstalleerd om te verifiëren.


0
2018-01-08 21:32



of open een cmd-venster en roep vervolgens de batch vanaf daar, de uitvoer verschijnt op het scherm.


-1
2018-05-29 15:51