ladeblken mit batch pogramm erstellen?

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!

Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren
cmdtypi 
Fragesteller
 08.11.2020, 17:40

DANKE! ich muss sagen das pogramm ist echt nice :O

0