Batchbestanden pauzeren en wachten: hoe u de stroom van uw scripts kunt regelen

Batchbestanden Pauzeren En Wachten Hoe U De Stroom Van Uw Scripts Kunt Regelen



Bij batchscripting op Windows kunnen de ontwikkelaars de stroom van uw scripts controleren met behulp van verschillende technieken of methoden om pauzes of wachttijden te introduceren. De opdrachten 'pauze' en 'wachten' zijn twee manieren om de stroom van uw batchbestanden te controleren. De opdracht “pauze” stopt de uitvoering van een batchbestand terwijl het bericht “Druk op een willekeurige toets om door te gaan...” wordt weergegeven. Het batchbestand kan pas worden uitgevoerd als de gebruiker op een toets drukt. De uitvoering van het batchbestand wordt opgeschort gedurende het aantal seconden dat wordt aangegeven door de wachtinstructie.

Opdracht voor het pauzeren van batchbestanden

De opdracht “pauze” van een batchbestand stopt de uitvoering van het batchbestand terwijl het bericht op de opdrachtregel wordt weergegeven. Het batchbestand wordt pas uitgevoerd als de gebruiker op een toets drukt. Het commando dat de volgende uitvoering stopt, is nuttig. Het is nuttig om het batchbestand rechtstreeks uit te voeren en de gewenste uitvoer op het scherm te zien verschijnen.







De syntaxis van het commando “pauze” is:



Pauze

Vraag de gebruiker om invoer

De opdracht 'pauze' in het volgende batchscript toont het bericht 'Druk op een willekeurige toets om door te gaan...' wanneer de gebruiker dit batchbestand uitvoert. Voordat het batchbestand doorgaat naar de opdracht “dir”, moet de gebruiker op een toets drukken.



@echo uit

rem Dit batchbestand pauzeert zodat de gebruiker op een toets kan drukken.

echo Hallo, Welkom bij de PAUSE-opdrachtdemonstratie.

echo De uitvoering van het script gaat door na de pauze.

pauze

rem Dit batchbestand gaat verder met de volgende opdracht.

echo Bedankt!

Jij





Wanneer de gebruiker op een willekeurige toets drukt via het toetsenbord, gaat dit batchproces verder:



Batchbestand wachtopdracht

De code die u heeft opgegeven, is een batchbestand waarmee twee programma's worden geopend: Kladblok en Paint. De code is als volgt:

@echo uit

echo Eerste programma starten.

START /B /WAIT kladblok.exe

echo Kladblok succesvol geopend op de achtergrond

echo Tweede programma starten.

START /WACHT mspaint.exe

echo De verf is succesvol geopend.

cmd /k

De eerste regel, “@echo off”, voorkomt dat het batchbestand de opdrachten weergeeft terwijl ze worden uitgevoerd.

De gebruiker wordt eenvoudigweg geïnformeerd dat het eerste programma wordt gestart via de tweede regel, namelijk 'echo Starting First Program'.

De derde regel, “START /B /WAIT notepad.exe”, opent het Kladblok-programma in een achtergrondvenster en wacht tot het klaar is voordat het verdergaat. De schakelaar “/B” vertelt het START-commando om het programma in een achtergrondvenster uit te voeren, en de schakelaar “/WAIT” vertelt het START-commando om te wachten tot het programma is voltooid voordat het verdergaat.

De vierde regel leest het echo Kladblok. Wanneer Kladblok met succes op de achtergrond wordt geopend, wordt de gebruiker alleen hiervan op de hoogte gesteld met een bericht.

De vijfde regel, 'echo Start tweede programma', geeft eenvoudigweg een bericht aan de gebruiker weer dat het tweede programma wordt gestart.

De zesde regel, “START /WAIT mspaint.exe”, opent het Paint-programma in een achtergrondvenster en wacht niet tot het klaar is voordat het verdergaat.

De zevende regel, 'echo The Paint is Succesvol geopend', toont eenvoudigweg een bericht aan de gebruiker dat de Paint met succes is geopend.

De achtste regel, “cmd /k”, opent een nieuw opdrachtpromptvenster en houdt het huidige opdrachtpromptvenster open.

Een lus gebruiken voor aangepaste vertragingen

We kunnen een lus gebruiken voor aangepaste vertragingen in het batchproces. Hier is een voorbeeld:

In dit voorbeeld wordt het eerste bericht aan de gebruiker getoond wanneer dit batchbestand wordt uitgevoerd. Het eerste bericht wordt vervolgens nogmaals weergegeven zodra de “for”-lus begint. De time-outopdracht stopt het batchbestand gedurende één seconde voordat het tweede bericht wordt weergegeven. Het uiteindelijke bericht wordt vervolgens na in totaal 10 iteraties weergegeven.

@echo uit

echo Demonstratie van vertraging met behulp van Loop

voor /l  %%i in (1,1,10) doen (

time-out /t 1 /nobreak > nul

echo Dit bericht wordt weergegeven na %%i seconde(n)

)

echo Dit bericht vertoonde een vertraging van 10 seconden.

Time-out gebruiken voor vertraging

De time-outopdracht van een batchbestand pauzeert de uitvoering van het batchbestand gedurende een vooraf bepaald aantal seconden. De syntaxis wordt hier gegeven:

time-out /t [/nobreak]

De schakelaar “/t” specificeert de hoeveelheid tijd in seconden die moet worden gewacht. De “/nobreak”-schakelaar schakelt de toetsaanslagen van de gebruiker uit om de vertraging te onderbreken.

Het commando “time-out” kan worden gebruikt om:

  • Stel de uitvoering van een batchbestand voor een vooraf bepaalde periode uit
  • Voorkom dat een batchbestandactie door de gebruiker wordt onderbroken
  • Creëer een gebruiksvriendelijkere ervaring door te voorkomen dat de gebruiker op een toets hoeft te drukken om door te gaan

Het volgende batchbestand pauzeert bijvoorbeeld gedurende 10 seconden:

@echo uit

echo Hallo, De uitvoering van het script gaat door na een vertraging van 10 seconden

time-out /t 10

echo Bedankt!

Zoals gedemonstreerd in de volgende schermafbeelding, loopt er een timer die wacht tot de gebruiker het “time-out”-commando onderbreekt door op een willekeurige toets te drukken. Als de gebruiker op een willekeurige toets drukt, stopt het proces en gaat naar de volgende opdracht in het batchbestand:

De gebruiker in de volgende schermafbeelding onderbreekt het commando “time-out” na 5 seconden, wat resulteert in de weergave van het bericht “Bedankt!” bericht:

De volgende schermafbeelding laat zien hoe het bericht 'Bedankt!' Het duurt 10 seconden voordat het bericht op het scherm wordt afgedrukt als de eindgebruiker de time-outinstructie niet onderbreekt:

Hier is de bijgewerkte code die is aangepast om de no-break-schakelaar op te nemen die voorkomt dat de eindgebruiker een batchbestandsproces onderbreekt:

@echo uit

rem Dit batchbestand pauzeert 10 seconden

echo Hallo, De uitvoering van het script gaat door na een vertraging van 10 seconden

time-out /t 10 /nobreak

rem Na 10 seconden wordt dit commando op het promptscherm weergegeven

echo Bedankt!

Hier is de uitvoer van de vorige code:

De opdrachtregel vraagt ​​de gebruiker om Y of N te typen als de gebruiker de opdracht “CTRL+C” gebruikt. Als de gebruiker op Y klikt, wordt deze batchtaak gestopt:

De opdrachten “pauze”, “wachten” en “time-out” zijn de manieren om de stroom van onze scripts te controleren. Het uitvoeren van het script wordt opgeschort wanneer de opdracht “pauze” wordt gebruikt, en het wordt voor een vooraf bepaalde tijd gestopt wanneer de opdracht “time-out” wordt gebruikt.

Voorwaardelijke instructies gebruiken voor Flow Control

Voorwaardelijke instructies zijn de meest haalbare techniek die wordt gebruikt om de stroom van een script aan te passen op basis van een bepaalde omstandigheid. Gebaseerd op de vraag of een voorwaarde waar of onwaar is, voert de “if”-instructie een van de twee code-uitvoeringen uit. De “if”-instructie is als volgt opgebouwd:

if anders

Voorbeeld:

Open Kladblok of een andere teksteditor naar keuze en schrijf de volgende code die de waarde van de inputValue-variabele initialiseert naar 1 op de derde regel. De waarde van de inputValue-variabele wordt vervolgens tijdens de runtime gecontroleerd met behulp van een “if”-instructie om te zien of deze gelijk is aan 1, 2 of 3. Als dit het geval is, wordt het juiste bericht afgedrukt op het opdrachtregelscherm. Als dit niet het geval is, wordt het laatste bericht weergegeven. In een voorwaardelijke verklaring die bekend staat als een “if”, wordt de inputValue van een variabele gecontroleerd om te zien of deze gelijk is aan 1, 2 of 3. Als dit het geval is, wordt een van de twee codeblokken uitgevoerd. Als de voorwaarde waar is, doet de voorwaardelijke verklaring niets.

@echo uit

rem Dit script test de variabele inputValue aan de hand van de waarden 1, 2 en 3.

stel invoerwaarde=1 in

if '%inputValue%'=='1' (

echo De invoerwaarde is gelijk aan 1.

) else if '%inputValue%'=='2' (

echo De invoerwaarde is gelijk aan 2.

) else if '%inputValue%'=='3' (

echo De invoerwaarde is gelijk aan 3.

) anders (

echo De variabele inputValue is niet gelijk aan 1, 2 of 3.

)

Uitgang:

Conclusie

De scriptstroom kan worden gecontroleerd en processen kunnen worden geautomatiseerd op het Windows-besturingssysteem met behulp van opdrachten, lussen en voorwaardelijke instructies zoals 'if'. Ontwikkelaars kunnen de uitvoering van een script stoppen of vertragingen toevoegen met de opdracht ‘pauze’ door gebruik te maken van ‘time-out’ of ‘ping’. Hoewel er geen ingebouwde “switch”-instructie is in batchscripts, kunnen we deze simuleren met “if”- en “else if”-expressies. Testen is van cruciaal belang om ervoor te zorgen dat deze scripts in de juiste context functioneren zoals bedoeld. Deze scripts zijn handig voor automatisering, systeembeheer en bestandsmanipulatie.