2016-06-30 23 views
0

Ich versuche, eine Batch-Datei zu schreiben, um viele Dateien mit einem Zeichen in den Dateinamen mit No. zu ersetzen.Schreiben Sie eine Batch-Datei, um Dateien in mehreren Ordnern umzubenennen

heißt *#*.*-*No.*.* Beispiele sind GT #3.doc-GT No. 3.doc alle Dateien haben unterschiedliche Dateierweiterungen. das heißt .txt, .doc, .docx, .xls, .dat, .mdb, etc ...

Außerdem sind diese Dateien in einem Ordner nicht aber in vielen Ordnern und Unterordnern sind.

OS ist Win 7. Ich freue mich auf die Hilfe, da ich ein Anfänger bin mit Batch-Dateien und es gibt Hunderte von Dateien umbenannt für den Umzug in eine Cloud-Lösung, die keine Symbole akzeptiert. Vielen Dank.

Antwort

0

Ich habe vergessen, wie Charge vor einigen Jahren zu verwenden, seit Powershell herauskam. Powershell bietet hierfür eine einfache Möglichkeit.

$target = "Your Path" 
Get-ChildItem -path $target -Recurse -Include *#* | rename-item -NewName { $_.name -replace '#','NO'} 

-recurse wird durch alle Ordner gehen und -include filtert Dateien mit # darin und eine Pipe-Element umbenennen. Rename-item hat eine Replace-Funktion, die den angegebenen Teil nur mit dem ersetzt, was Sie möchten.

+0

ausgezeichnet, die perfekt gearbeitet. Vielen Dank! Du hast mir gerade Stunden Arbeit gerettet! –

+0

Kein Problem. Wann immer Sie denken, dass Sie eine Batch-Datei benötigen, schauen Sie sich Powershell an. Es ist ein sehr mächtiges Werkzeug zur Automatisierung von Aufgaben in Windows. Bitte markieren Sie den Thread als beantwortet, wenn es das ist, was Sie suchen. – user3225054

+0

Klingt wie eine große Ressource, werde ich sicher sein, es zu untersuchen. Ich wünsche ihnen einen wunderbaren Tag! –

0

Diese sollte es tun:

@echo off 
setlocal EnableExtensions DisableDelayedExpansion 

rem // Define constants here: 
set "ROOT=D:\path\to\root\folder\" 
set "PATTERN=*#*.*" 
set "SEARCH=#" 
set "REPLAC=No. " 

for /R "%ROOT%" %%I in ("%PATTERN%") do (
    set "FILENAME=%%~nI" 
    setlocal EnableDelayedExpansion 
    set "FILENAME=!FILENAME:%SEARCH%=%REPLAC%!" 
    ren "%%~fI" "!FILENAME!%~xI" 
    endlocal 
) 

endlocal 
exit /B 
+0

Danke! Das ist fantastisch. Gibt es eine gute Ressource, die Sie zum Schreiben von Batch-Dateien vorschlagen könnten? –

+0

Hm ... schwierig! [Rob van der Woudes Scripting Pages] (http://www.robvanderwoude.com/batchstart.php) ist eine gute Ressource, und [SS64 (Befehlszeilenreferenz)] (http://ss64.com/nt/) ist eine gute Referenz ... – aschipfl

+0

Danke, ich werde sicher sein, diese zu überprüfen! –