axelnick
Goto Top

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

Content-ID: 6494685699

Url: https://administrator.de/contentid/6494685699

Ausgedruckt am: 21.11.2024 um 17:11 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