axelnick

Batch, Datei als Variablenwert umbenennen

Hallo zusammen,
ich möchte alle Dateien in einem Verzeichnis umbenennen. Dabei soll im Dateinamen das "X" in den aktuellen Wert der Variable "counter_CV" (Wert zwischen 1 und 99) umbennant werden.

@echo off & setlocal enableDelayedExpansion 
for %%i in ("%Vz%\ImageBase\zHitMeUp\*%X*") do (  
     set "neu=%%~nxi"  
     Echo ren "%%i" !neu:%X=%counter_CV%!  
)

Als Ausgabe bekomme ich dies:

ren "C:\Users\LuNi\Documents\ImageBase\zHitMeUp\CVX_43_A1.png" neu:counter_CV

Ersetze ich nun die Variable durch eine Zahl funktioniert es wie gewünscht.

@echo off & setlocal enableDelayedExpansion 
for %%i in ("%Vz%\ImageBase\zHitMeUp\*%X*") do (  
     set "neu=%%~nxi"  
     Echo ren "%%i" !neu:%X=3!  
)

ren "C:\Users\LuNi\Documents\ImageBase\zHitMeUp\CVX_43_A1.png" CV3_43_A1.png

Wie muss ich das Komando abändern das X aurch die Variable ersetzt wird?
Kann mir jemand damit behilflich sein?

LG
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 6494685699

Url: https://administrator.de/forum/batch-datei-als-variablenwert-umbenennen-6494685699.html

Ausgedruckt am: 29.04.2025 um 01:04 Uhr

TK1987
TK1987 01.07.2024 aktualisiert um 08:03:41 Uhr
Goto Top
Moin,

Zitat von @axelnick:
@echo off & setlocal enableDelayedExpansion 
for %%i in ("%Vz%\ImageBase\zHitMeUp\*%X*") do (  
     set "neu=%%~nxi"  
     Echo ren "%%i" !neu:%X=%counter_CV%!  
)
na du musst die Variable schon auch mit einem Prozentzeichen abschließen, wie du es auch bei der Vz-Variable getan hast
@echo off & setlocal enableDelayedExpansion 
for %%i in ("%Vz%\ImageBase\zHitMeUp\*%X%*") do (    
     set "neu=%%~nxi"    
     Echo ren "%%i" "!neu:%X%=%counter_CV%!"  
)

Gruß Thomas
axelnick
axelnick 01.07.2024 um 08:22:54 Uhr
Goto Top
Hi, Tk
danke für deine schnelle Antwort.
Dennoch möchte er den Namen nicht ändern.

ren "C:\Users\LuNi\Documents\ImageBase\zHitMeUp\CVX_43_A1.png" "neu:=1"
TK1987
TK1987 01.07.2024 um 09:26:21 Uhr
Goto Top
Zitat von @axelnick:
Dennoch möchte er den Namen nicht ändern.

ren "C:\Users\LuNi\Documents\ImageBase\zHitMeUp\CVX_43_A1.png" "neu:=1"
Du hast der Variable X aber schon einen Wert zugewiesen?
axelnick
axelnick 01.07.2024 um 09:37:49 Uhr
Goto Top
Der Variablen X ist kein wert zugewiesen.
Will ja das "X "durch "%counter_CV%" ersetzen.
TK1987
TK1987 01.07.2024 aktualisiert um 10:12:26 Uhr
Goto Top
Zitat von @axelnick:
Der Variablen X ist kein wert zugewiesen.
Will ja das "X "durch "%counter_CV%" ersetzen.
Dann ist X auch keine Variable und du darfst dort entsprechend keine Prozentzeichen verwenden.
@echo off & setlocal enableDelayedExpansion 
for %%i in ("%Vz%\ImageBase\zHitMeUp\*X*") do (      
     set "neu=%%~nxi"      
     Echo ren "%%~i" "!neu:X=%counter_CV%!"    
)

Wenn die counter_CV-Variable jedoch innerhalb der Forschleife verändert wird, musst du stattdessen mit Funktionen arbeiten...
@echo off & setlocal enableDelayedExpansion 

set counter_CV=1
for %%i in ("%Vz%\ImageBase\zHitMeUp\*X*") do call :doSomething "%%~i"  

exit /b 0
:doSomething
  set neu=%~1
  echo ren "%~1" "!neu:X=%counter_CV%!"  
  set /a counter_CV+=1
  exit /b 0