Problem bei batch- Zählschleife

ka0t

New member
Ich habe eine kleine batch geschrieben die X mal ein Programm öffnen, warten und es wieder schließen soll.

Wenn dies erfolgt ist will ich per shutdown-r die Kiste neustarten lassen.

Hier ist das kleine Progrämmchen:


Code:
SET i = 1

cls

pause


:openclose
sleep.exe 5


start winword
sleep.exe 5


taskkill /F /IM winword.exe
sleep.exe 3

:openclose

FOR /L %%i IN (1, 1, 3) DO (goto openclose)

rem rum isses nu
PAUSE


Zu der Bemerkung "rum isses nu" kommt er nicht und verharrt ewig in der Schleife.

Mit if hatte ich es vorher veruscht, hatte mich der Einfachheit wegen doch für eine for- Schleife die ich aus c++ kenne entschieden.

Wenn ich die Schleife kopfgesteuert mache wird die Schleife nur einmal ausgeführt.

Müsste ich eine Sprungmarke zur for- Funktion am Ende der openclose setzen wenn ich die Schleife kopfgesteuert lasse ?


Die Endlosschleife mit immer falscher Abbruchbedingung kann ich mir nicht erklären.
 
Zuletzt bearbeitet von einem Moderator:
Ich hab mir mal erlaubt deinen Code in den richtigen BB-Code zu packen.

Das einfachste vorweg: Du hast 2x die selbe Sprungmarke definiert (openclose). Ich würde vermuten, dass nur die 2. gültig ist, also wird in deiner Schleife immer wieder einfach nur "kurz vor die Schleife" gesprungen.

An deiner Stelle würde ich die FOR-Schleife an den Anfang setzen und danach die Sprungmarken definieren.

 
Ich hab das ganze umgeschrieben.

Nun speichert die batch eingegebene Variablen in einem erstellten Ordner (testweise)

Was mich wahnsinnig macht ist das die batch immer bei Neueintritt der openclose- Schleife den Syntax "if /I "%i%" GEQ "%zahler%" goto :end"
als true nimmt - aber er MUSS doch false sein :wtf:
wenn I grössergleich Zähler hopse zum Ende
I ist 0+1 pro Schleifendurchlauf, Zähler ist vom Benutzer vorgegeben und immer auf 10.

Die batch gibt auch aus das I 2 ist wenn die Schleife verlassen wird und auch das die Zählervariable bei beispielsweise 10 liegt.

Edit: wenn ich die Bedinung für den Schleifenausgang auf GTR stelle funktioniert es - weswegen kann ich aber nicht verstehen xD

Code:
SET /A i = 0
echo off
 set /p reboot=Wie oft soll sich der Rechner neustarten ? 

 set /p zahler=Bitte Anzahl der Durchgaenge pro boot        eingeben: 

 set /p progvar=Bitte den Namen der Anwendung ohne Endung   eingeben: 

 set /p wartezeit=Bitte die Oeffnungsdauer des Programms in Sekunden:



md C:\openclose
echo %zahler% >>"C:\openclose\Durchgang.txt"
echo %progvar% >>"C:\openclose\Anwendung.txt"
echo %wartezeit% >>"C:\openclose\wartezeit.txt"
echo %reboot% >>"C:\openclose\reboot.txt"

cls
 
echo Das Programm laueft nun %zahler% mal durch .
echo Die Anwendung heisst %progvar% . 
echo Die Anwendung bleibt %wartezeit% Sekunden geöffnet.
SET /A ( Laufzeit=(zahler*Wartezeit*reboot)/60 )
echo Die Laufzeit betraegt gesamt circa %Laufzeit% Minuten. 


echo gestartet am %date:~0% - %time:~0,8% Uhr>>"C:\openclose\prockill.txt"




color 2  
sleep.exe 4
goto openclose
:openclose
sleep.exe 2
set /A i=%i%+1

echo DURCHGANG %i% VON %zahler% >> "C:\openclose\prockill.txt"
cls
echo DURCHGANG %i% VON %zahler%
SET /A ( Laufzeit=(zahler*Wartezeit*reboot)/60 )
echo %Laufzeit% Minuten verbleibend.
if /I "%i%" GEQ "%zahler%" goto :end

start %progvar%
sleep.exe %Wartezeit%


taskkill /F /IM %progvar%.exe >> "C:\openclose\prockill.txt"

sleep.exe 2
if /I "%i%" LEQ "%zahler%" goto :openclose

:end
echo ______________________ >> "C:\openclose\prockill.txt"
echo Jetzt ist der Test beendet !!
echo %i%
echo Ende am %date:~0% - %time:~0,8% Uhr>>"C:\openclose\prockill.txt" 
echo Nach 20 Sekunden startet das System neu 
echo reboot.exe wird gestartet ...
PAUSE
 
Zuletzt bearbeitet:

Online-Statistiken

Zurzeit aktive Mitglieder
0
Zurzeit aktive Gäste
65
Besucher gesamt
65

Beliebte Forum-Themen

Zurück
Oben Unten