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-Key: 6494685699

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

Printed on: July 3, 2024 at 02:07 o'clock

Member: TK1987
TK1987 Jul 01, 2024 updated at 06:03:41 (UTC)
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
Member: axelnick
axelnick Jul 01, 2024 at 06:22:54 (UTC)
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"
Member: TK1987
TK1987 Jul 01, 2024 at 07:26:21 (UTC)
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?
Member: axelnick
axelnick Jul 01, 2024 at 07:37:49 (UTC)
Goto Top
Der Variablen X ist kein wert zugewiesen.
Will ja das "X "durch "%counter_CV%" ersetzen.
Member: TK1987
TK1987 Jul 01, 2024 updated at 08:12:26 (UTC)
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