Prozentzeichen benutzen in BATCH Datei?

3 Antworten

TechPech1984 hat bereits die weitgehend gültige Regel geliefert.

Bei direkter Eingabe in die Console genügt es , wie Du es in Deiner Frage geschrieben hast. Einfach %

In einer Batchdatei müssen % für eine Verwendung als Text verdoppelt werden: %%

demo.cmd

@echo off
echo Starting... 1%
echo Starting... 2%
echo Starting... 3%
pause

...aber Batch ist tückisch...

  • Für %Variablen% bleibt es bei einfachen % .
  • bei Laufvariablen in for-Loops wird in Batchdateien verdoppelt for %%a in ("bubb") do (...) , direkt in der Console jedoch for %a in ("bubb") do (...) !
  • Textuale % in call-Konstrukten (Variablenzugriff in Klammerböcken) müssen vervierfacht werden!
@echo off
call echo hallo 10 %%%%
pause 

demo2. cmd

@echo off
for /l %%a in (0,20,100) do (
  echo Starting... %%a%%
  timeout 1 >nul
)

 rem die Nummer  mit  den vierfachen  %%%%:
 rem wenn man im Klammerblock auf  eine im Block  gesetzte variable  zugreifen   muss
set "MaximalWert=340"
for /l %%a in (0,20,%MaximalWert%) do (
   rem prozent  berechnen 
  set /a "proz=%%a * 100 / MaximalWert"
   rem  auf aktuelle in der Klammer berechnete Variable  %proz% zugreifen
  call echo %%a von %MaximalWert% ist %%proz%%%%%%
  timeout 1 >nul
)
pause

Wenn Du Dir was gutes tun willst, gewöhn dich nicht allzsehr an Batch, Microsoft hat das Ende von Batch bereits eingeläutet.

Stell Dich auf Powershell ein.

Batch kann höllisch werden.

Mal ein Beispiel, wie man Batch an seine Grenzen treibt:

und auch sonst am Limit:

Batch ist eine der schwierigsten Sprachen überhaupt.

Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren

% ist ein Zeichen was so erstmal ausgewertet wird.

Es gibt zweierlei Arten von Variablen: Scriptvariablen und Systemvariablen. Die Scriptvariablen werden innerhalb von Schleifen eingesetzt, beginnen mit  % und einem frei wählbaren Zeichen, oder einer Zeichenfolge. Systemvariablen müssen von  % begonnen und von  % abgeschlossen werden.
https://de.wikibooks.org/wiki/Batch-Programmierung:_Erweiterungen_unter_Windows_NT

. deswegen erscheint es nicht .

doppelt dann erscheint es wieder

auch wenn man modulo mit % rechnen will , damit % seine eigentliche bedeutung verliert muss man dann %% nutzen , sonst denkt es es kommt z.b. eine variable


Erzesel  26.03.2022, 20:54

das ist noch lange nicht alles, es gibt sogar Situationen, wo man vervierfachen muss

@echo off
  rem  % geht  auch  mit verdoppeln %% nicht durch
call :subMachWasMitText "Fail jetzt  kommt ein  Prozentzeichen %%"
call :subMachWasMitText "Aber... jetzt  kommt ein  Prozentzeichen %%%%"
pause
exit /b
:subMachWasMitText
  rem irgendwas  das  mit eiem Übergebenen String arbeitet
echo:%~1
exit /b

eventuell mit anführungszeichen?

echo "Starting...3%" 

funktioniert bei mir im Terminal jedenfalls.