PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ein *.bat script stoppen, bzw. warten lassen


Dexxx
15.12.2011, 11:20
Hallo

Ich habe ein kleines weiteres Problem....
Mit meinem script lasse ich mir eine Datei herunterladen und anschließend entpacken.

In der Datei, die entpackt werden soll, ist wget.exe dabei.
Manchmal passiert es, dass der Befehl zu schnell weiter geht und wget.exe nochnicht richtig entpackt ist und ich daher einen Fehler bekomme.

Ich habe es bereits mit einem ping -n 3 localhost > nul versucht.
Doch das zeigt keine Wirkung.

Geht das irgendwie, dass das bat script nach dem entpacken der Datei für ein paar Sekunden gestoppt wird und erst dann, wenn alles entpackt ist weiter läuft?

Vielen Dank


Firefall
15.12.2011, 13:29
Wie entpackst du denn die Datei? Der Befehl, den du dafür brauchst, arbeitet offenbar asynchron, so wie sich das anhört. Eventuell lässt isch das mit einem Switch ändern? Lies doch mal <deinbefehl> /? durch. Ansonsten kannst du den befehl pause verwenden, der wartet aber auf eine Benutzereingabe.

German
15.12.2011, 13:30
Wie im vorangegangenen Thread beschrieben, gibt es die Möglichkeit Abläufe synchron ader asynchron abarbeiten zu lassen. In diesem Fall benötigst du die synchrone Anbindung des Prozesses zum Entpacken. Wie sieht denn die entsprechende Kommandozeile bei dir aus?

Edit: Hallo Firefall, da war ich wohl eine Minute zu langsam :D

Dexxx
15.12.2011, 13:49
Die bat habe ich in eine exe Datei kovertiert, mit dem bat to exe Konverter.
Dem kann man auch Dateien mit dazu packen lassen.
Zum Beispiel die wget.exe

Wenn man nun die exe startet, wird alles augepackt und das ehemalige Bat script startet sofort und auch läuft ansonsten 1a durch.
Ganz am Anfang habe ich das ping -n drin, damit das Script ein paar Sekunden wartet, bis alles ausgepackt ist.

Aber das funktioniert wie gesagt nicht immer.
Ich hab da eine überprüfung drin .. if not exist"wget.exe" goto wgeterror
von 10 mal ausführen kommte der Fehler, dass eben die wget.exe fehlt.
Da würde ich gerne einen kompletten Stop für 2 oder 3 Sekunden einbauen, sodass alles entpackt werden kann zuerst.

lano
15.12.2011, 14:49
Da würde ich gerne einen kompletten Stop für 2 oder 3 Sekunden einbauen, sodass alles entpackt werden kann zuerst.

Schreiben Sie folgenden Zweizeiler in eine Batch-Datei namens SLEEP.BAT und speichern Sie sie in einem DOS-Pfad:

@echo off
choice /c:xy /t:x,%1 > NUL Um eine Batch-Datei z.B. für 10 Sekunden anzuhalten, fügen Sie dort folgenden Befehl ein (möglich sind Werte zwischen 0 und 99):

call sleep 10 Quelle: c't

Dexxx
15.12.2011, 15:06
Das sleep habe ich schon gefunden gehbat.
Aber Braucht man dazu nicht die sleep.exe oder so?
Geht das nicht irgendwie ohne zusätzlichen Dateien?

German
15.12.2011, 15:21
Die bat habe ich in eine exe Datei kovertiert, mit dem bat to exe Konverter.
Immer wieder der gleiche Blödsinn :mauer:

Keine Ahnung ob das funktioniert ...

:wget_loop
for %%i in (wget.exe) do if "%%~zi" neq "449024" (
>nul ping -n 2 localhost
goto wget_loop
)
>nul ping -n 4 localhost
Bei mir hat die wget.exe eine Größe von exakt 449024 Byte. Sollte das bei dir anders sein musst du die Größe anpassen.

Dexxx
15.12.2011, 15:33
Hi

Vielen Dank.
Werde es probieren.