Hilfe bei einer Schleife in einer Batch
Hallo Zusammen,
ich benötige noch mal Hilfe bei einer Schleife in einer Batch. Dabei geht es darum, dass wenn eine Datei vorhanden ist die nächste zu prüfen bis zu einer bestimmten die nicht vorhanden ist und diese dann zu starten!
Ein Beispiel:
Arbeitspfad: C:\Test\
Inhalte: test.mdb, test1.mdb und test2.mdb
Wenn nun einer dieser Dateien geöffnet ist, werden ja von Windows *-ldb Dateien erzeugt!
Nun möchte ich erreichen, dass man bei klick auf die Batch, die später als Verknüpfung auf dem Desktop liegt, folgendes passiert!
Prüfe ob test.ldb vorhanden ist!
Wenn ja; prüfe ob test1.ldb usw. bis test2.ldb
Wenn Nein: starte die *.mdb also die passende
Wenn dann also test.ldb und test1.ldb vorhanden ist, dann wird die test2.mdb gestartet!
Sind alle *.ldb vorhanden soll eine Meldung erscheinen "Es sind alle Instanzen vergeben" oder so was...
Ich muss offen zugeben, dass ich mich nicht ganz daran trauen und nicht weiss, ob ich besser mit if else oder ne Schleife das besser zu lösen ist!
Danke
ich benötige noch mal Hilfe bei einer Schleife in einer Batch. Dabei geht es darum, dass wenn eine Datei vorhanden ist die nächste zu prüfen bis zu einer bestimmten die nicht vorhanden ist und diese dann zu starten!
Ein Beispiel:
Arbeitspfad: C:\Test\
Inhalte: test.mdb, test1.mdb und test2.mdb
Wenn nun einer dieser Dateien geöffnet ist, werden ja von Windows *-ldb Dateien erzeugt!
Nun möchte ich erreichen, dass man bei klick auf die Batch, die später als Verknüpfung auf dem Desktop liegt, folgendes passiert!
Prüfe ob test.ldb vorhanden ist!
Wenn ja; prüfe ob test1.ldb usw. bis test2.ldb
Wenn Nein: starte die *.mdb also die passende
Wenn dann also test.ldb und test1.ldb vorhanden ist, dann wird die test2.mdb gestartet!
Sind alle *.ldb vorhanden soll eine Meldung erscheinen "Es sind alle Instanzen vergeben" oder so was...
Ich muss offen zugeben, dass ich mich nicht ganz daran trauen und nicht weiss, ob ich besser mit if else oder ne Schleife das besser zu lösen ist!
Danke
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 307764
Url: https://administrator.de/forum/hilfe-bei-einer-schleife-in-einer-batch-307764.html
Ausgedruckt am: 03.04.2025 um 19:04 Uhr
18 Kommentare
Neuester Kommentar
Moin,
ich würde das mit 3 if Abfragen abfangen und im else Fall gar nichts machen, im dritten If dann die Meldung rausgeben.
Teste das mal, batch ist nicht so mein Ding, die Leerzeilen sind wichtig.
IF exist "c:\test\test1.ldb" (
c:\test\test1.mdb
) ELSE (
cd %USERPROFILE%
)
IF exist "c:\test\test2.ldb" (
c:\test\test2.mdb
) ELSE (
cd %USERPROFILE%
)
ich würde das mit 3 if Abfragen abfangen und im else Fall gar nichts machen, im dritten If dann die Meldung rausgeben.
Teste das mal, batch ist nicht so mein Ding, die Leerzeilen sind wichtig.
IF exist "c:\test\test1.ldb" (
c:\test\test1.mdb
) ELSE (
cd %USERPROFILE%
)
IF exist "c:\test\test2.ldb" (
c:\test\test2.mdb
) ELSE (
cd %USERPROFILE%
)
Wenn mir jemand hier noch goto Syntax einbaut habe ich was ich brauche...
IF not exist "c:\test\test1.ldb" (
c:\test\test1.mdb
goto Marke1
) ELSE (
echo "bla bla bla"
)
goto ENDE
:Marke1
echo "hier wurde zu Marke1 gesprungen (es gibt kein zurück)"
:ENDE
echo "und tschüss"
--> http://www.antonis.de/dos/batchtut/infotec/
Hallo,
und dein kann auch so etwas gekürzt aussehen
Gruß,
Peter
Zitat von @zeroblue2005:
for /f %%a IN ('dir /b /s C:\Program Files\RAP\*.ldb') do call del %%a
Dann findet er den Pfad nicht wo muss ich die " " setzen?
Na wie immer so for /f %%a IN ('dir /b /s C:\Program Files\RAP\*.ldb') do call del %%a
Dann findet er den Pfad nicht wo muss ich die " " setzen?
for /f %%a IN ('dir /b /s "C:\Program Files\RAP\*.ldb"') do call del %%a
IF not exist "C:\RAP.ldb" (
start C:\RAP.mdb
exit
) ELSE (
goto RAP1
)
goto ENDE
:RAP1
IF not exist "C:\RAP1.ldb" (
start C:\RAP1.mdb
exit
) ELSE (
goto RAP2
)
goto ENDE
:RAP2
IF not exist "C:\RAP2.ldb" (
start C:\RAP2.mdb
exit
) ELSE (
cls
echo "Alle RAP-Instanzen sind in Benutzung!"
echo "Bitte ein RAP-System schliessen!"
pause
)
IF not exist "C:\RAP.ldb" (
start C:\RAP.mdb
) ELSE (
If not exist "C:\RAP1.ldb" (
start C:\RAP1.mdb
) Else (
If not exist "C:\RAP2.ldb" (
start C:\RAP2.mdb
) Else (
cls
echo "Alle RAP-Instanzen sind in Benutzung!"
echo "Bitte ein RAP-System schliessen!"
echo.
pause
)
)
)
Gruß,
Peter

Hi,
he did not define the delimiters, and so the for loop splits the path into parts by the space character which is one of the default delimiters, so we finally define "no" delimiters at all, then the space in the path doesn't matter.
But this can also be simplified by this
Regards
he did not define the delimiters, and so the for loop splits the path into parts by the space character which is one of the default delimiters, so we finally define "no" delimiters at all, then the space in the path doesn't matter.
for /f "delims=" %%a IN ('dir /b /s "C:\Program Files\RAP1\*.ldb"') do del "%%a"
del /s /q "C:\Program Files\RAP1\*.ldb"
Hallo,
Sorry, mein Fehler. War ungetestet.... und ein flüchtigkeitsfehler. NimmDas CALL wird nicht benötigt, stört hier aber nicht.
Gruß,
Peter
Sorry, mein Fehler. War ungetestet.... und ein flüchtigkeitsfehler. Nimm
for /f "Delims=" %%a IN ('dir /b /s "C:\Program Files\RAP1\*.ldb"') do call del "%%a"
Gruß,
Peter

Hi Peter,
you forgot to set the delimiters to zero
, otherwise each path is splittet by the spaces in the path ...
Regards
you forgot to set the delimiters to zero
Regards