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-ID: 191358

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

Ausgedruckt am: 22.11.2024 um 04:11 Uhr

bastla
bastla 17.09.2012 aktualisiert um 17:05:00 Uhr
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
ThinkSmart
ThinkSmart 18.09.2012 um 07:43:23 Uhr
Goto Top
Guten Morgen!

Vielen Dank! Das funktioniert!

Jedoch kommt mir das ein wenig langsam vor, könnte man das noch irgendwie beschleunigen?
bastla
bastla 18.09.2012 um 07:58:07 Uhr
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
ThinkSmart
ThinkSmart 18.09.2012 um 08:03:06 Uhr
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.