schully
Goto Top

Countdown in Batch-Datei

Hallo Forum,

ich möchte gern eine Wartezeit von 180 Sekunden in einer Batch-Datei anzeigen.

Jetzt habe ich das so gelöst:

set /a i=0
:start
if /I %i% GEQ 180 goto :next
C:\wait.exe 1
set /a i=%i%+1
echo %i%
goto :start

Im cmd sieht das dann so aus:
1
2
3
4
5
6
7
...
180
Ich möchte aber das nur die aktuelle Zahl zu sehen ist und nicht diese Liste von 1 - 180.
Kann mir einer sagen wie ich das hinbekomme.
Vielen Dank schon mal für Eure Hilfe.

MfG
J. Schulz

Content-ID: 108793

Url: https://administrator.de/contentid/108793

Ausgedruckt am: 12.11.2024 um 19:11 Uhr

bastla
bastla 12.02.2009 um 10:53:36 Uhr
Goto Top
Hallo Schully!

Ich möchte aber das nur die aktuelle Zahl zu sehen ist und nicht diese Liste von 1 - 180.
Mit
cls & echo %i%
hast Du es schon versucht?

Grüße
bastla
Schully
Schully 12.02.2009 um 11:08:46 Uhr
Goto Top
Hallo bastla,

so das funktioniert aber super schnell.
Das sind höchstens 18 Sekunden!!
bastla
bastla 12.02.2009 um 11:13:46 Uhr
Goto Top
Hallo Schully!

Das sind höchstens 18 Sekunden!!
Die Zeile
C:\wait.exe 1
hätte ich eigentlich als "Mache 1 Sekunde Pause!" interpretiert ...

Nur zur Sicherheit: Meine Zeile oben sollte als Ersatz für Deine "echo"-Zeile verwendet werden.

Grüße
bastla
Schully
Schully 12.02.2009 um 11:20:12 Uhr
Goto Top
Das war auch so.
Jetzt mache ich es so:

@echo off
cls
echo ---------------------
echo - Power off Script -
echo ---------------------


set /a i=0
:start
if /I %i% GEQ 180 goto :next
C:\wait.exe 1000
set /a i=%i%+1
cls & echo %i%
goto :start

:next
pause

Das funktioniert dank Deiner Hilfe absolut sauber.
Jetzt löscht es aber die ganzen Zeilen oberhalb der Zahlen;-((
Z.B. diese hier.
echo ---------------------
echo - Power off Script -
echo ---------------------

Könnte man das noch ändern sodas die Zeilen stehen bleiben?

Gruß
Jürgen
bastla
bastla 12.02.2009 um 11:27:18 Uhr
Goto Top
Hallo Schully!

Etwa so:
@echo off & setlocal
set Kopf=%temp%\Kopf.txt
>%Kopf%  echo ---------------------
>>%Kopf% echo - Power off Script -
>>%Kopf% echo ---------------------
>>%Kopf% echo\

set /a i=0
:start
if %i% GEQ 180 goto :next
cls
type %Kopf%
echo %i%
C:\wait.exe 1000
set /a i+=1
goto :start

:next
pause
Grüße
bastla

P.S.: Bitte verwende zum Posten von Batch-Code eine ...
Schully
Schully 12.02.2009 um 12:50:06 Uhr
Goto Top
Hallo bastla,

ja so könnte es gehen.
Aller dings ist es so das diese Wartezeit innerhalb einer größeren Batch-Datei eingebaut ist.
Ich habe dort mehrere verschiedene Stufen die mir ein Echo ausgeben damit ich weiß was gerade getan wurde.
Z.B.
Rechner aufwecken mit Bestätigung
Copy Job erfolgreich oder nicht usw.
Diese ganzen Meldungen gehen mir jetzt verloren oder kann ich diese alle mit
%Kopf% echo eine Meldung
in die Textdatei schreiben?

Und dann wäre noch die Zählreienfolge von 180 nach 0. Das bekomme ich auch nicht hin.

Gruß
Jürgen
bastla
bastla 12.02.2009 um 12:57:38 Uhr
Goto Top
Hallo Schully!

Diese ganzen Meldungen gehen mir jetzt verloren oder kann ich diese alle mit
>>%Kopf% echo eine Meldung
in die Textdatei schreiben?
Kannst Du machen ...

Und dann wäre noch die Zählreienfolge von 180 nach 0. Das bekomme ich auch nicht hin.
Entweder das Gegenstück zu Deiner bisherigen Vorgangsweise, also:
set /a i=180
:start
if %i% LEQ 0 goto :next
cls
type %Kopf%
echo %i%
C:\wait.exe 1000
set /a i-=1
goto :start

:next
pause
oder eine Zählschleife:
for /L %%z in (180,-1,0) do (
    cls
    type %Kopf%
    echo %%z
    C:\wait.exe 1000
)
pause
Grüße
bastla
Schully
Schully 12.02.2009 um 13:28:31 Uhr
Goto Top
Hallo bastla,

das läuft super ab.

Die FOR-Schleife ist genau was ich brauche.
Das Ding ist gelöst.

Vielen Dank
Gruß
Jürgen
GhostScripter
GhostScripter 12.02.2009 um 15:14:30 Uhr
Goto Top
Moin zusammen,

das Script hat das Problem ja gelöst, aber nur mal so nebenbei:

Kann man sowas eigentlich mit ESC Sequenzen lösen? Einen Beep bekommt man ja auch hin.

Also entweder ein ECHO ohne Zeilenvorschub und dann ein paar mal ^H oder Zeile hoch und überschreiben.

beste Grüße
Jan
bastla
bastla 12.02.2009, aktualisiert am 18.10.2012 um 18:37:45 Uhr
Goto Top
@GhostScripter
Derartige Überlegungen sind etwa da schon mal Thema gewesen ...

Grüße
bastla
Schully
Schully 12.02.2009 um 15:24:26 Uhr
Goto Top
Hallo Jan,

wie meinst Du das? Kannst Du das mal Coden?

Grüße
Jürgen
GhostScripter
GhostScripter 13.02.2009 um 11:29:01 Uhr
Goto Top
So richtig leider eben nicht. Drauf gekommen bin ich im Zusammenhang mit drei Dingen:

1., Man kann den Prompt auch ändern. Ein $H macht bei dem ein Backspace. Ich nutze das ab und zu, um mir im Prompt die Zeit anzeigen zu lassen, wobei mich die Hundertstel nicht wirklich interessieren. Zum Beispiel um bei Tests die Laufzeit zu protokollieren.

mal so einen Prompt als Beispiel:
prompt $c$d$s$t$h$h$h$f$_$p$g

2. Die Ausgabe von Sonderzeichen funktioniert auch mit mind. einem Steuerzeichen (Beep - 0x07)
copy con beep.bat [Enter]
@echo [Ctrl+G] [Enter]
[Ctrl+Z] [Enter]

for /F %i in ('beep.bat') do set beep=%i  
echo %beep%

3. ein ECHO ohne Zeilenvorschub gibt es z.B. hier: Echo ohne Zeilenumbruch und ähnliche Spielereien

Naja, das alles zusammen weckte da eben Hoffnungen face-smile

beste Grüße
Jan