ladeblken mit batch pogramm erstellen?
hey ich würde gerne eine batch datei erstellen die cmd öffnet und dann halt so ne art ladebalken erstellt z.b mit * würd mich sehr über anworten freuen ;)
1 Antwort
Kein Anfägersache...
Batch ist eine Sprache zur Automatisierung der Systemverwaltung und normalerweise nicht für irgendwelche grafischen Spielereinen geeignet.
Nichts ist unmöglich . Die folgenden Beispiele sehen billig aus, aber es steckt eine Menge Trickserei in den kleinen Beispielen.
Als erstes der der set/p-Trick.
Set /p "var=FrageText" gibt einen Text aus und erwartet in der gleichen Zeile eine Eingabe des Nutzers. Diese wird durch Einlesen vom Nul-Gerät automatisert. (ganz schräge Nummer). In diesem Fall wird jedoch kein Zeilenvorschub erzeugt und der Cursor bleib bis zum nächsten Text an der letzten Position. So lange kein Zeilenvorschub erfolgt, wird immer in der gleichen Zeile weitergeschrieben.
@echo off
rem 20 Schritte
for /l %%a in (1,1,20) do (
rem schreibe einen Stern (*) ohne Zeilenvorschub am ende der Zeile
<nul set /p "=*"|| ver >nul
rem eine Sekunde pause (repräsentiert das was den Fortschritt bremst)
timeout 1 >nul
)
rem wenn fertig neu Zeile
echo.
pause
Mit Windows 10 ist Die Console (wenn erlaubt) wieder fähig ANSI-EscapeSequenzen zu verarbeiten.
Die folgende Demo ist einfach die Anwendung der vorhandenen Möglichkeiten ohne realen Nutzen für die Arbeit mit Batch.
@echo off
rem Umlaute darstellen
chcp 65001 >nul
rem prüfe ob Escape-Sequenzen erlaubt sind (Windows 10)
rem nur der !!!DWord!!!-Wert ForceV2=0 deaktiviert, alles andere erlaubt Escapesequenzen (ansonsten scheinen ANSISequenzen inzwischen by default unterstützt zu werden)
reg query "HKCU\Console" /v "ForceV2"|find "REG_DWORD 0x0">nul && (
echo Sorry ANSI-Escapesequenzen sind fur diese Console deaktiviert.
timeout 5 >nul
exit /b
)
rem erzeuge ESC-Zeichen (ASCII 27)
for /f "delims=;" %%. in ('"prompt $E; & for %%. in (nul) do rem"') do ( set "ESC=%%.")
rem Cursormacros:
set "loadCursorPos=%ESC%[u"
set "saveCursorPos=%ESC%[s"
rem Cursor unsichtbar machen
echo %ESC%[?25l
:::::: Ende Vorbereitung ::::::
for /l %%a in (1,1,20) do (
rem die folgende zeile tut folgendes:
rem lade (wenn gespeichert) geseicherte CursorPosition , schreibe das gewünschte Zeichen, speichere aktuelle Cursorposition
echo %loadCursorPos%*%saveCursorPos%
echo ich mache jetzt irgendwas anderes:
echo Zähle: %%a
echo babeluba laberrhababer
timeout 1 >nul
)
echo Fertig...
echo.
echo Jetzt wird's richitig Bunt ....
rem hier etwas um richtig "anzugeben":
rem Selektoren Vorder- und Hintergrund:
set "fGroundClr=38"
set "bGroundClr=48"
rem Farbtabelle für Regenbogen erzeugen
set "colorTable=52,88,124,160,196,202,208,214,220,226,190,154,118,82,46,41,36,31,26,21,20,55,53"
rem zeichnen
echo Hintergrund-Regenbogen
rem CursorPosition speichern
echo %saveCursorPos%
for %%a in (%colorTable%) do (
echo %loadCursorPos%%ESC%[%bGroundClr%;5;%%am*%saveCursorPos%
timeout 1 >nul
)
rem auf Standardfaben zurücksetzen
echo %ESC%[0m
echo Vordergrund-Regenbogen
rem CursorPosition speichern
echo %saveCursorPos%
for %%a in (%colorTable%) do (
echo %loadCursorPos%%ESC%[%fGroundClr%;5;%%am*%saveCursorPos%
timeout 1 >nul
)
echo %loadCursorPos%%ESC%[0m
pause
Ich hoffe ich habe Dir jetzt nicht das Hirn weggebrutzelt..😅😅
Das Ganze funktioniert nicht auf jedem System uneingeschränkt!