thinksmart
Goto Top

Zirkumflex in Dateinamen austauschen

Hallo und allen erst Mal einen schönen Start in die Woche!

Es geht um viele Dateien in einem Ordner (~20.000). Einige der Dateien beinhalten ein Zirkumflex als Trennzeichen für Zusatzinfos im Dateinamen (~500).

Bsp:
EU3232AFFFSSP^22SSEU.dml 
EU3232AFFFSSP^22SSEU3.dml
EU3232AFFFSSP^23SSEU.dml
EU3233AFFFSSP^23SSEU.dml

Da weitere Programm im Workflow nicht mit dem Trennzeichen im Dateinamen klarkommen, würde ich es gerne einfach gegen ein anderes ersetzen.
Das ganze hatte ich so vor:

Setlocal EnableDelayedExpansion 
SET RENAMEDIR=%CD%\TMP
for  %%i in ("%RENAMEDIR%\*^*") do (   
   	set "x=%%~nxi"    
   	ren %%i "!x:^=_!"   
)
Jedoch stoße ich dort auf das Problem, dass der Pfad nicht gefunden wird:

The system cannot find the file specified.

Wenn ich vor dem Rename ein echo setze, wird der Befehl richtig angezeigt, nur eben ohne Zirkumflex. Gibt es dafür eine Lösung?

Gruß
ThinkSmart

Content-Key: 191358

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

Printed on: April 19, 2024 at 22:04 o'clock

Member: bastla
bastla Sep 17, 2012 updated at 15:05:00 (UTC)
Goto Top
Hallo ThinkSmart!

Versuch es so:
Setlocal EnableDelayedExpansion 
SET "RENAMEDIR=TMP"  
for %%i in ("%RENAMEDIR%\*^*") do set "x=%%~nxi" & call :ProcessFile "%%i"  
goto :eof

:ProcessFile
ren %~1 "%x:^=_%"  
goto :eof
Grüße
bastla
Member: ThinkSmart
ThinkSmart Sep 18, 2012 at 05:43:23 (UTC)
Goto Top
Guten Morgen!

Vielen Dank! Das funktioniert!

Jedoch kommt mir das ein wenig langsam vor, könnte man das noch irgendwie beschleunigen?
Member: bastla
bastla Sep 18, 2012 at 05:58:07 (UTC)
Goto Top
Hallo ThinkSmart!

Am schnellsten geht es, wenn Du von vornherein das entsprechende Sonderzeichen vermeidest ... face-wink

Wie lange läuft das denn bei Dir für 500 Dateien, und wie oft muss die Umbenennung erfolgen?

Grüße
bastla
Member: ThinkSmart
ThinkSmart Sep 18, 2012 at 06:03:06 (UTC)
Goto Top
Im Prinzip ist es gar nicht so lange, nur das Datenaufkommen könnte noch steigen. Aber danke nochmal.

Ich geb' mich mit der Lösung schon zufrieden. :D Und markier es als gelöst.