Mit Batch eine Countdown Uhr erstellen

Mitglied: jack0swiss

jack0swiss (Level 1)

19.03.2010, aktualisiert 18.10.2012, 29714 Aufrufe, 11 Kommentare, 1 Danke

von 30 auf null zählen :D

Hallo


Hab hier ein kleinen Code Schnippsel
@echo off
cls                                 
for /L %%A in (30,-1,0) do (
echo sie haben noch %%A sekunden zeit
ping localhost -n 2 >nul
cls
)
cls <----löscht den bildschriminhalt wieder
for /L %%A in (30,-1,0) do ( <---- 30 anfangszeit, -1 = minus 1 von 30 nachher 29 etc... , 0= endstation ;D
echo sie haben noch %%A sekunden zeit <------------ Hier ist die ausgabe %%A beinhaltet die aktuelle zahl
ping localhost -n 2 >nul <------------den localhost pingen ist nötig um die zeit in sekunden anzuzeigen, sonst würde es viel zu schnell runterzählen
cls <-löscht den bildschriminhalt wieder :D

viel spass
Mitglied: bastla
19.03.2010, aktualisiert 18.10.2012
Hallo jack0swiss und willkommen im Forum!

Als Alternative etwas in der Art:
01.
@echo off & setlocal
02.
set /a Sec=30
03.
cls          
04.
<nul set /p=%Sec%
05.
set /a Sec-=1
06.
for /L %%A in (%Sec%,-1,0) do ( 
07.
    ping localhost -n 2 >nul 
08.
    <nul set /p=...%%A
09.
)
Mehr dazu zB hier: https://www.administrator.de/wissen/echo-ohne-zeilenumbruch-und-%c3%a4hn ... Echo ohne Zeilenumbruch und ähnliche Spielereien">href="https://www.administrator.de/wissen/echo-ohne-zeilenumbruch-und-%c3%a4hnliche-spielereien-102460.html" title="https://www.administrator.de/wissen/echo-ohne-zeilenumbruch-und-%c3%a4hnliche-spielereien-102460.html" onclick="window.open(this.href); return false;">https://www.administrator.de/wissen/echo-ohne-zeilenumbruch-und-%c3%a4hn ... Echo ohne Zeilenumbruch und ähnliche Spielereien

Grüße
bastla
Mitglied: jack0swiss
25.03.2010 um 00:10 Uhr
Hi Bastla


Danke für die herzliche einladung. oh ja sieht gut aus :D leider fügt es immer die zahl hintereinander an.

gruss
jack
Mitglied: bastla
25.03.2010 um 00:17 Uhr
Hallo jack0swiss!
leider fügt es immer die zahl hintereinander an.
... was ja auch der Plan ist (und weswegen ich es "Alternative" genannt habe) ...

Grüße
bastla
Mitglied: jack0swiss
26.03.2010 um 00:14 Uhr
Hi Bastla


oh ;D du gut, ich schlecht

grüsse
jack
Mitglied: bastla
26.03.2010 um 07:45 Uhr
Hallo jack0swiss!

Das ist sicherlich keine Frage von "gut" oder "schlecht" - die Leser Deines Tipps haben ganz einfach eine Option mehr ...

Grüße
bastla
Mitglied: jeb-the-batcher
06.06.2010 um 23:52 Uhr
Hi,

es gibt aber auch die Möglichkeit auf einer Zeile mehrfach zu schreiben ohne das die neuen Zeichen angehängt werden.

Man braucht nur ein CR Zeichen ausgeben.

Da gibt es jetzt allerdings zwei Dinge zu beachten, üblicherweise packe ich mir ein CR in eine Variable, dann kann man diese nur mit der !myCR! ausgeben %myCR% hat nicht die gewünschte Wirkung.

Zweitens kann man unter Vista mit dem set /p Befehl keine Whitespace Zeichen am Anfang mehr ausgeben (unter XP geht das noch).
Bei Vista werden diese einfach geschluckt, aber als Lösung kann man einfach ein nicht Whitespace als erstes ausgeben.

Jetzt stellt sich der geneigte Leser wahrscheinlich noch die eigentliche Frage wie man überhaupt ein CR Zeichen in eine Variable bekommt.

Variante1. Man benötige XP und verwende ipconfig
Die Variante ist toll, weil bei der Ausgabe von ipconfig Microsoft offenbar vergessen hat wie die Zeilenenden bei Microsoft aussehen, sprich statt CRLF
gibt ipconfig LFCR aus.
Aber läuft halt nur unter XP (und hab ich nur in der deutschen Variante getestet).

Variante2. Man verwende debug.exe (auf jedem System vorhanden) oder eine Hexeditor und erzeuge eine Datei mit zwei CR Zeichen, kann man auch mit der batch Datei selbst machen.

Variante3. Man gebe einen recht langen String in eine Datei aus, und lese diese wieder ein, dazu muss der String allerdings gerade so lang sein, dass der Batch Interpreter noch in der Lage ist das CR auszugeben aber nicht mehr das LF.

Also alles in allem recht offensichtliche Wege um mal schnell an ein einzelnes CR zu kommen.

Aber wenn man es dann mal hat, kann man endlich "auf der Stelle" Text ausgeben.

Btw. Mit Backspace klappt das übrigens auch, allerdings kann ich das nur mit Variante 2 erzeugen, dafür wird ein Backspace nicht als Whitespace angesehen,

Wer jetzt auf die tolle Idee kommt statt z.B. "X!myCR!Neuer Text", das "X" durch Alt-255 (geschützes Leerzeichen) zu ersetzen, ja war eine gute Idee, hatte ich auch, aber Vista ist ja nicht blöd
Mitglied: bastla
07.06.2010 um 00:05 Uhr
Hallo jeb-the-batcher und willkommen im Forum!
... aber Vista ist ja nicht blöd
Ob man das einfach so stehen lassen kann ...

Deine Vorschläge sehen jedenfalls durchaus interessant aus ...

Grüße
bastla
Mitglied: jeb-the-batcher
07.06.2010 um 00:24 Uhr
Hallo bastla,

noch Variante3, damit man nicht probieren muss

01.
@echo off
02.
setlocal EnableDelayedExpansion
03.
Call :CreateCR
04.
for /L %%n IN (1 1 1000) DO (
05.
	<nul set /p "=Count is now %%n!cr!
06.
)
07.
echo\
08.
goto :eof
09.

10.

11.
:CreateCR
12.
setlocal EnableDelayedExpansion EnableExtensions
13.
set "X=."
14.
for /L %%c in (1,1,13) DO set X=!X:~0,4094!!X:~0,4094!
15.

16.
echo !X!  > %temp%\cr.tmp
17.
echo\>> %temp%\cr.tmp
18.
for /f "tokens=2 usebackq" %%a in ("%temp%\cr.tmp") do (
19.
	endlocal
20.
	set cr=%%a
21.
	goto :eof
22.
)
23.
goto :eof
jeb
Mitglied: Planlos89
13.01.2011 um 07:47 Uhr
Kleine anmerkung

01.
ping localhost -n 2 >nul <------------den localhost pingen ist nötig um die zeit in sekunden anzuzeigen, sonst würde es viel zu schnell runterzählen
je nach schnelligkeit des systems ist die zeit die er zum selfping bruacht unterschiedlich


der alte p3 im büro braucht für "2" ca 1 sec..
mein gaming pc mit 6Kerner bruacht für 1 sec mindestens "8-10"
Mitglied: bastla
13.01.2011 um 08:52 Uhr
@Planlos89

Mehr Kontrolle = mehr Aufwand; also entweder die Pause zB über ein kleines VBScript erzeugen oder etwa die "sleep.exe" (aus den "Windows Server 2003 Resource Kit Tools") verwenden ...

Grüße
bastla
Mitglied: Planlos89
13.01.2011 um 09:10 Uhr
war nur ne anmerkung das man das beachten muss;)
Titel: Mit Batch eine Countdown Uhr erstellen
Content-ID: 138678
Art des Inhalts: Tipp
Ausgedruckt am: 21.05.2019 um 20:38:16 Uhr
URL: https://administrator.de/contentid/138678