Hallo Experten,
Ich mußte beruflich von SCO Unix und Linux auf WinXP umsteigen.
Unter SCO hatte ich viele Skripte die problemlos liefen. Jetzt muß ich einige Sachen unter XP automatisieren. Habe versucht dies als Batch zu schreiben, mit wenig Erfolg. Da die Hilfe in XP mir irgendwie nichts sagt bräuchte ich ein paar Infos wo es im Netz etwas zu dem Thema gibt. (Gogglen hat mich nur noch mehr verwirrt). Wie kann ich denn beispielsweise ein Skript für 60 Sekunden warten lassen?
Hallo Experten,
Ich mußte beruflich von SCO Unix und Linux auf WinXP
umsteigen.
Unter SCO hatte ich viele Skripte die problemlos liefen. Jetzt
muß ich einige Sachen unter XP automatisieren. Habe versucht
dies als Batch zu schreiben, mit wenig Erfolg. Da die Hilfe in
XP mir irgendwie nichts sagt bräuchte ich ein paar Infos wo es
im Netz etwas zu dem Thema gibt.
und http://www.cygwin.com/ tut nicht fuer dich?
Ich mußte beruflich von SCO Unix und Linux auf WinXP
umsteigen.
Unter SCO hatte ich viele Skripte die problemlos liefen. Jetzt
muß ich einige Sachen unter XP automatisieren. Habe versucht
dies als Batch zu schreiben, mit wenig Erfolg. Da die Hilfe in
XP mir irgendwie nichts sagt bräuchte ich ein paar Infos wo es
im Netz etwas zu dem Thema gibt. (Gogglen hat mich nur noch
mehr verwirrt). Wie kann ich denn beispielsweise ein Skript
für 60 Sekunden warten lassen?
Hallo,
wo es was brauchbares im Netz gibt, weiss ich zwar nicht, aber wie man eine Pause machen kann:
ping 127.0.0.1 -n 61 >nul
Der Ping-Befehl schickt die Päckchen immer mit einer Sekunde Verzögerung ab. Wenn man ihn mit -n anweisst, ein Päckchen mehr als gewünschte Sekunden zu schicken, schickt er das erste sofort und nach dem 2. Päckchen ist eine Sekunde um. Geschickterweise pingt man localhost an. Das >nul schickt alle Ausgaben ins Nirwana.
Gruss,
Thomas
Hallo Friedl!
Ich mußte beruflich von SCO Unix und Linux auf WinXP
umsteigen.
Addons wie Cygwin sind da bestimmt 'ne gute Lösung, da Du dann „altvertraute 'ix-Befehle“ verwenden kannst.
Unter SCO hatte ich viele Skripte die problemlos liefen. Jetzt
muß ich einige Sachen unter XP automatisieren. Habe versucht
dies als Batch zu schreiben, mit wenig Erfolg. Da die Hilfe in
XP mir irgendwie nichts sagt bräuchte ich ein paar Infos wo es
im Netz etwas zu dem Thema gibt. (Gogglen hat mich nur noch
mehr verwirrt). Wie kann ich denn beispielsweise ein Skript
für 60 Sekunden warten lassen?
Wenn Du im Command-Ordner (C:\WINDOWS\COMMAND\ - oder ähnlich!) den Befehl CHOICE zur Verfügung hast, kannst Du das so lösen:
choice /n /c:. /t:.,60
Bei Eingabe eines „.“ oder nach Ablauf von 60 Sekunden wird der Batch fortgesetzt. Ich habe in diesem Fall den Punkt gewählt, weil er am wenigsten augenscheinlich an der Oberfläche auftaucht. Du kannst aber auch jedes fast beliebige über die Tastatur eingebbare ASCII-Zeichen ausser dem Leerzeichen verwenden (von #33 bis #126 und #128 bis #255).
Weil’s ggf. noch wichtig für Dich ist: eine Ereignisabfrage lässt sich z.B. dann wie folgt bewerkstelligen:
:Loop
choice /n /c:wa "(W)eiter (A)bbruch "
rem ODER: choice /n /c:. /t:W,0
if errorlevel 3 goto Loop
if errorlevel 2 goto End
if errorlevel 1 goto Job
:Job
rem -- hier Job einbinden --
goto End
:End
-
Eingabeaufforderung -
Das /n unterdrückt die Anzeige eines Standard-Textes; mit „Zeichenfolge“ in Anführungsstrichen lässt sich stattdessen besser eine indiv. Eingabeaufforderung anzeigen. -
Eingabe festlegen -
Die mit /c: angegebenen Buchstaben erhalten das EL in ihrer Reihenfolge. Das EL muss umgekehrt abgefragt werden (vom grösseren zum kleineren). Sicherheitshalber baut man vorher noch die Abfrage eines höheren EL ein, damit der Benutzer tatsächlich etwas eingeben muss!
Werte für /c: könnten z.B. sein: „/c:ASDFJKLÖ“. Gross-/Kleinschreibung wird IMHO dann nur beim „Ö“ unterschieden. „Ö“ würde mit Errorlevel 8 und „A“ mit Errorlevel 1 rausfallen.
- Timer -
Um die „Standard-Antwort“ voreinzustellen, gibt man „/t:X,#“ ein. Ist „#“ gleich 0, wird _kein_ Timeout gesetzt. Der Wert für „#“ kann max. 99 Sekunden betragen.
HTH
CU DannyFox64
PS: Das Doppelpunkte eine Sprungmarke einleiten, die _nicht_ ausgeführt wird, kann man Kommentare in Batches auch mit „:“ einleiten; dem gegenüber bremsen „rem“-Kommentare lange Batches aus. So schreibe ich meistens statt „rem Ein Kommentar“ lieber „:: Ein Kommentar“.