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.

ladebalken.cmd 2,7 KB · läuft unter Windows 10/11 · aktualisiert am 17.10.2026 · 6 Downloads

SHA-256: a51da2115e53c8f770b4160d72c2f6a8f8d40205b623af746b08e314e92e4880

Code

So sieht die Datei aus, die Sie herunterladen (87 Zeilen). Die Kommentare oben im Skript erklären, was es tut.

ladebalken.cmd
@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