Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Dateinamenbereinigung per Batch

Frage Entwicklung Batch & Shell

Mitglied: rannseier2

rannseier2 (Level 1) - Jetzt verbinden

11.01.2011, aktualisiert 18.10.2012, 3370 Aufrufe, 14 Kommentare

Hallo,

Ich habe (leider) eine 2TB-Platte mit einer ganzen Menge unsortiertem Kram "geerbt". Während der Inhalt zum Großteil brauchbar ist sind es die Dateinamen nicht.

Ich möchte gerne eine Batchdatei schreiben und Rekursiv alle DAteinamen und Verzeichsnamen bereinigen.

Ein Teil der Dateinamen brauche ich nur am Anfang zu bereinigen, Beispiel:

xyz-blabla.txt soll zu
blabla.txt werden.

Auch sollen alle Punkte zu Leerzeichen werden und doppelte Leerzeichen zu einem Zusammengefassst werden.

Die letzten Batchs habe ich 96 auf einem Amiga geschrieben, weiss jemand wie man sowas via Batch unter Win/Kommandozeile realsiert?


Gruß,
Karl
Mitglied: mathe172
11.01.2011 um 20:09 Uhr
Hallo rannseier2!

Versuchs mal damit(Leerzeichen find ich zwar nicht so schön...):
01.
@echo off & setlocal enabledelayedexpansion 
02.
set "Drive=E:\" 
03.
 
04.
for /R "%Drive%" %%A in ("*.*") do ( 
05.
call :CleanName "%%~nA" 
06.
echo ren "%%A" "!Name!%%~xA" 
07.
REM Das echo für Tatsächlichen Gebrauch löschen 
08.
09.
pause 
10.
goto :eof 
11.
 
12.
:CleanName 
13.
set "Name=%~1" 
14.
for /F "tokens=1* delims=-" %%B in ("%Name%") do set "Name=%%C" 
15.
set "Name=%Name:.= % 
16.
set "Name=%Name:  = %" 
17.
goto :eof
Mathe172
Bitte warten ..
Mitglied: pieh-ejdsch
11.01.2011 um 20:36 Uhr
moin mathe,

da is noch was...Leerzeichen.
mach mal aus Zeile 06.
echo ren %%A "!Name!%%~xA"

Gruß Phil
Bitte warten ..
Mitglied: mathe172
11.01.2011 um 20:41 Uhr
Hallo Phil!

Danke fürs Draufaufmerksam machen -Habs jetzt verbessert.

Mathe172
Bitte warten ..
Mitglied: Friemler
11.01.2011, aktualisiert 18.10.2012
Hallo Karl,

ich vermute mal ganz frech, dass es sich beim Inhalt Deiner Platte um ähh... bewegte Bilder handelt (hüstel). Kenne solche Machwerke. Hauptsache mal alles gesammelt, was sich kriegen lässt, die Benennung ist erstmal egal. Dem Namenschaos mit Batchskript Herr zu werden, ist ein schwieriges Unterfangen, da es kein durchgängiges Benennungsschema gibt. Ich würde Dir ein Tool zum massenweise umbenennen von Dateien empfehlen (als Stichwörter KRename, RenameMaster, Bulk Rename Utility), einfach mal Google fragen und darauf achten, dass Deine Betriebssystemversion unterstützt wird.

Oder Du nimmst FreeCommander, ein kostenloser TotalCommander-Clon. Dort kannst Du eine Flat-Ansicht der Ordnerstruktur einstellen, d.h. Du siehst alle Dateien auf der Platte, auch die, die in Unterverzeichnissen liegen. Dann markierst Du alle oder nur die, deren Namen ungefähr gleich chaotisch sind und startest das eingebaute Massen-Umbenennungsutility. Dort kannst Du verschiedene Einstellungen machen, nach welchen Regeln umbenannt werden soll und siehst eine Vorschau des Ergebnisses sowie evtl. auftretende Namenskonflikte. Ist aber nicht so mächtig wie die darauf spezialisierten Tools.

Hier gibts auch einen Tipp zum Thema mit der Nennung von mehreren Umbenennungs-Tools.

Viel Erfolg!

Gruß
Friemler
Bitte warten ..
Mitglied: rannseier2
11.01.2011 um 22:45 Uhr
Hallo,

Die Scripte sehen schonmal ganz gut aus.

Wie kann ich am besten String aus dem Dateinamenanfang entfernen?


Gruß,
Karl


PS: Sich nicht nur Urlaubsvideos sondern auch noch andere "Errungenschaften".
Bitte warten ..
Mitglied: bastla
11.01.2011 um 23:38 Uhr
@mathe172
... und nur für den Fall, dass es noch weitere "-" im Namen gäbe (und diese und die Namensteile danach erhalten bleiben sollen):
for /F "tokens=1* delims=-" %%B in ("%Name%") do set "Name=%%C"
Grüße
bastla
Bitte warten ..
Mitglied: mathe172
12.01.2011 um 10:18 Uhr
@Biber: Habs oben geändert

@rannseier2: Der erste String bis zum "-" wird doch gelöscht...

Mathe172
Bitte warten ..
Mitglied: rannseier2
12.01.2011 um 16:15 Uhr
@mathe172:

Ach so, dann habe ich mich wohl falsch ausgedrückt. Das xyz- sollte nur ein Bindestrich sein, es gibt durchaus Prefixe die erhalten bleiben sollen. Ich dachte an was wo ich dann z.B. nach xyz- und xzy- Suche und dieses lösche aber z.B. abc- gar nicht antaste. Geht das irgendwie?


Gruß,
Karl
Bitte warten ..
Mitglied: mathe172
12.01.2011 um 16:45 Uhr
Hallo rannseier2!

Versuchs mal damit:
01.
@echo off & setlocal enabledelayedexpansion 
02.
set "Drive=E:\" 
03.
REM Alle Suchen-Ersetzen-Paare. Bsp: Suche:"  " Ersetze mit:" " Achtung: Zeichen wie = escapen: ^= 
04.
set "Str1=  " 
05.
set "Ers1= " 
06.
set "Str2=." 
07.
set "Ers2= " 
08.
 
09.
for /F "tokens=1 delims=Str=" %%A in ('set Str') do if !last! lss %%A set "Last=%%A" 
10.
for /R "%Drive%" %%A in ("*.*") do ( 
11.
call :CleanName "ÿ%%~nA" 
12.
echo ren "%%A" "!Name!%%~xA" 
13.
REM Das echo für Tatsächlichen Gebrauch löschen 
14.
15.
pause 
16.
goto :eof 
17.
 
18.
:CleanName 
19.
set "Name=%~1" 
20.
for /l %%B in (1,1,%Last%) do ( 
21.
set "Str=ÿ!Str%%B! 
22.
set "Ers=!Ers%%B!" 
23.
set "Name=!Name:%Str%=%Ers%!" 
24.
goto :eof
Mathe172
Bitte warten ..
Mitglied: rannseier2
14.01.2011 um 01:18 Uhr
Hallo,

Das funktioniert schon mal soweit, hier für schon mal einen besten Dank.

Frage:

Wie kann man das Script auch auf Verzeichnisse erweitern?


Gruß,
Karl
Bitte warten ..
Mitglied: rannseier2
14.01.2011 um 02:30 Uhr
Hallo Mathe,

Das Script sieht Vielversprechend aus, funktioniert leider nicht.

Liegt das an den "ÿ"?


Gruß,
Karl
Bitte warten ..
Mitglied: mathe172
14.01.2011 um 20:03 Uhr
Hallo rannseier02!

Sorry - Ich hatte noch zwei Denkfehler
Das hier funktioniert aber zumindest bei mir:
01.
@echo off & setlocal enabledelayedexpansion 
02.
set "Drive=E:\" 
03.
REM Alle Suchen-Ersetzen-Paare.  
04.
REM Bsp: Suche:"  " Ersetze mit:" "  
05.
REM Soll ein String nur am Namensanfang gesucht werden, vor beide Strings des Paares ein \ machen.  
06.
REM Achtung: Zeichen wie = escapen: ^= 
07.
set "Str1=." 
08.
set "Ers1= " 
09.
set "Str2=  " 
10.
set "Ers2= " 
11.
 
12.
for /F "tokens=1 delims=Str=" %%A in ('set Str') do if !last! lss %%A set "Last=%%A" 
13.
for /R "%Drive%" %%A in ("*.*") do ( 
14.
call :CleanName "\%%~nA" 
15.
echo.ren "%%A" "!Name:~1!%%~xA" 
16.
REM Das echo für Tatsächlichen Gebrauch löschen 
17.
18.
pause 
19.
goto :eof 
20.
 
21.
:CleanName 
22.
set "Name=%~1" 
23.
for /l %%B in (1,1,%Last%) do ( 
24.
set "Str=!Str%%B! 
25.
set "Ers=!Ers%%B!" 
26.
call :Ersetzen 
27.
28.
goto :eof 
29.
 
30.
:Ersetzen 
31.
set "Name=!Name:%Str%=%Ers%!" 
32.
goto:eof
Mathe172
P.S.: Das ÿ war ein nicht wirklich durchdachter Versuch, die ersetzung auf den Anfang der Namen zu Begrenzen- Was beim ersetzen von "." zu " " nicht viel Sinn gemacht hätte...
Bitte warten ..
Mitglied: rannseier2
14.01.2011 um 21:56 Uhr
Hallo Mathe,

Das sieht gut aus und funktioniert auch bei mir.

Gibt es eine Möglichkeit dass auch für die Verzeichnisnamen zu erweitern?


Gruß,
Karl
Bitte warten ..
Mitglied: pieh-ejdsch
14.01.2011 um 22:05 Uhr
moin,

ich verweise mal auf ein Script welches Ordnungsgemäß umbenennt: Ersetzen von Zeichen in Datei- und Verzeichnisnamen in allen Unterordnern
und zwar auch die betreffenden Ordnernamen vorzugsweise auch rekursiv.

zwar nur SonderZeichen etc. zum einzelnen Ersetzen aber ich guck mal ob ich noch was einfügen / ergänzen kann

@mathe = ~ * Istgleich , Tilde und Stern kannst Du nicht mit Erweiterter Variablendarstellung ersetzten.

Gruß Phil
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Batch mit forfiles - Dateiendung filtern - Dateien löschen

Frage von mschaedler1982 zum Thema Batch & Shell ...

Batch & Shell
Doppelte Dateneinträge per Batch aus Datei löschen? HILFE (3)

Frage von freshman2017 zum Thema Batch & Shell ...

Batch & Shell
gelöst Ordner per Batch in RAR (1)

Frage von kampen zum Thema Batch & Shell ...

Batch & Shell
gelöst Einen Teil eines Textpfades aus einer TXT per Batch entfernen!? (3)

Frage von kampen zum Thema Batch & Shell ...

Neue Wissensbeiträge
Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

(1)

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Peripheriegeräte

Was beachten bei der Wahl einer USV Anlage im Serverschrank

(9)

Tipp von zetboxit zum Thema Peripheriegeräte ...

Windows 10

Das Windows 10 Creators Update ist auf dem Weg

(6)

Anleitung von BassFishFox zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Exchange Server
Exchange 2016 Standard Server 2012 R2 Hetzner Mail (36)

Frage von Datsspeed zum Thema Exchange Server ...

Verschlüsselung & Zertifikate
Mit Veracrypt eine zweite interne (non-system) Festplatte verschlüsseln (10)

Frage von Bernulf zum Thema Verschlüsselung & Zertifikate ...

Internet Domänen
Nameserver ein Geist? (7)

Frage von zelamedia zum Thema Internet Domänen ...

Microsoft Office
Übertrag in eine andere Tabelle (6)

Frage von charmeur zum Thema Microsoft Office ...