Farbiger Ladebalken für Batch-Dateien
Ein farbiger Fortschrittsbalken mit Prozentanzeige für die Eingabeaufforderung. Per Doppelklick als Demo, oder in eigene Batch-Skripte einbauen: call ladebalken.cmd /p 50 "Kopiere Dateien". Die Anleitung steht im Skript.
SHA-256:
a51da2115e53c8f770b4160d72c2f6a8f8d40205b623af746b08e314e92e4880 Code
So sieht die Datei aus, die Sie herunterladen (87 Zeilen). Die Kommentare oben im Skript erklären, was es tut.
@echo off
rem ==========================================================================
rem Ladebalken fuer die Eingabeaufforderung Version 2.0, Oktober 2026
rem https://friederich-it.de/downloads
rem
rem Farbiger Ladebalken mit Prozentanzeige (Windows 10/11).
rem
rem Vorfuehren: ladebalken.cmd (dauert 10 Sekunden)
rem ladebalken.cmd 30 (dauert 30 Sekunden)
rem
rem In eigenen Batch-Dateien verwenden:
rem call ladebalken.cmd /p 40 "Kopiere Dateien" zeichnet den Balken bei 40 %
rem call ladebalken.cmd /p 100 "Fertig" (immer in derselben Zeile)
rem call ladebalken.cmd /fertig beendet die Zeile
rem Beispiel:
rem for %%f in (*.txt) do (
rem copy "%%f" D:\Sicherung >nul
rem set /a N+=1 & call ladebalken.cmd /p !N!0 "%%f"
rem )
rem ==========================================================================
setlocal EnableExtensions EnableDelayedExpansion
for /f %%a in ('echo prompt $E^| cmd') do set "ESC=%%a"
if /i "%~1"=="/p" goto :zeichne
if /i "%~1"=="/fertig" (
echo(
exit /b 0
)
rem ---------------------------------------------------------------- Vorfuehrung
set "SEK=%~1"
if not defined SEK set "SEK=10"
set /a SEK=SEK+0 2>nul
if !SEK! lss 1 set "SEK=1"
if !SEK! gtr 600 set "SEK=600"
set "DBL="
for %%x in (%cmdcmdline%) do if /i "%%~x"=="/c" set "DBL=1"
title Ladebalken - Friederich-IT
echo.
echo Ladebalken-Vorfuehrung: !SEK! Sekunden, abbrechen mit Strg+C
echo.
set /a SCHRITT_MS=SEK*1000/50
for /l %%i in (0,2,100) do (
call :zeichne /p %%i "Bitte warten ..."
if %%i lss 100 call :warte !SCHRITT_MS!
)
echo(
echo.
echo !ESC![92mFertig.!ESC![0m
echo.
if defined DBL pause
exit /b 0
rem ---------------------------------------------------------------- Balken zeichnen
:zeichne
set "PROZ=%~2"
set "TXT=%~3"
set /a PROZ=PROZ+0 2>nul
if !PROZ! lss 0 set "PROZ=0"
if !PROZ! gtr 100 set "PROZ=100"
set /a VOLL=PROZ*40/100, LEER=40-VOLL
set "B1="
set "B2="
for /l %%n in (1,1,!VOLL!) do set "B1=!B1! "
for /l %%n in (1,1,!LEER!) do set "B2=!B2! "
set "ZAHL= !PROZ!"
set "ZAHL=!ZAHL:~-3!"
<nul set /p "=!ESC![2K!ESC![G !ESC![42m!B1!!ESC![100m!B2!!ESC![0m !ZAHL! %% !TXT!"
exit /b 0
rem ---------------------------------------------------------------- warten (Millisekunden)
:warte
set /a ZIEL=%~1
call :jetzt START
:warte_schleife
ping -n 1 127.0.0.1 >nul
call :jetzt JETZT
set /a DIFF=(JETZT-START)*10
if !DIFF! lss 0 set /a DIFF+=86400000
if !DIFF! lss !ZIEL! goto :warte_schleife
exit /b 0
:jetzt
set "T=%time: =0%"
set /a "%1=((1!T:~0,2!-100)*3600 + (1!T:~3,2!-100)*60 + (1!T:~6,2!-100))*100 + (1!T:~9,2!-100)"
exit /b 0