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
GELÖST

Ordner nach 8-Stelligen Dateinamen durchsuchen und umbenennen

Frage Entwicklung Batch & Shell

Mitglied: koeson8

koeson8 (Level 1) - Jetzt verbinden

26.12.2013, aktualisiert 23:24 Uhr, 2766 Aufrufe, 6 Kommentare

Liebes Forum!

Ich bin jetzt schon seit geraumer Zeit auf der Suche nach einer Lösung für folgendes Problem:

Batch-Datei die folgendes kann/macht:

1) Ordner nach 8-stelligen Dateinamen durchsuchen (sind immer *.pdf Dateien)
2) Wenn gefunden, dann unbenennen: §§§1§§ Dateiname §§§§§ Dateiname.Endung

@2) ...habe ich schon eine gute Lösung - Dank administrator.de (wobei statt § immer ein anders Zeichen gemacht wird)
@1) ...war der Plan, evt mit "dir" und 8 Fragezeichen oder Sternchen zu arbeiten, funktioniert leider nicht.

Für Ideen und Inputs wäre ich wircklich sehr dankbar!!!

Schönen 2. Weihnachtstag,

Koeson8

Ps.: so schauts im Moment bei mir aus:

01.
For /F %%i in ('dir /B ????????.pdf') do ( 
02.
	goto Batch 
03.
	goto End 
04.
05.
 
06.
:Batch 
07.
	For /F %%i in ('dir /B ????????.pdf') do set Dateiname=%%i 
08.
	for /f "delims=. tokens=1" %%i in ("%Dateiname%") do set Titel=%%i 
09.
	for /f "delims=. tokens=2" %%i in ("%Dateiname%") do set Endung=%%i 
10.
	ren "%Dateiname%" "§§§1§§%Titel%§§§§§%Titel%.%Endung%" 
11.
 
12.
:End 
13.
 
14.
Pause
Mitglied: Pjordorf
26.12.2013 um 15:34 Uhr
Hallo,

Zitat von koeson8:
@1) ...war der Plan, evt mit "dir" und 8 Fragezeichen oder Sternchen zu arbeiten, funktioniert leider nicht.
Was funktioniert da nicht? Bitte genau deinen bei dir erzeugten Fehler(n) hier für uns nachvollziehbar reinstellen. Wir könenn zwar deine Fehler erahnen, aber unsere Kistallkuglen hängen noch am Weihnachtsbaum.

Und mit den Code tags wird es allen leichter deinen Code zu lesen. http://www.administrator.de/faq/20#toc-28

Gruß,
Peter
Bitte warten ..
Mitglied: koeson8
26.12.2013 um 15:57 Uhr
Hallo Peter!

Danke für den Foramt-Tipp! Ich bin neu in diesem Forum und deshlab fur konstruktives Feedback immer zu haben!
Zu der Frage "was kunktioniert nicht":

Es gibt keine Fehlermeldung aus, sondern läuft durch. Das Problem ist, dass es nur die letzte Datei in meinem Testordner umbenennt. Wenn ich es nocheinmal durchlaufen lasse, die Vorletzte ....wenn ich dann die Batch-Datei so oft geöffnet habe, dass alle mal umbenannt wurden, fäng sie wieder von unten an und benennt die letzte §§1§§§Name§§§§§Name.pdf um...

Eigentlich würde ich gern alle 8-stelligen Dateinamen unter einmal umbenennen, und falls sie +/- als 8 Stellen haben sollen sie ignonriert werden.

Bei weiteren Fragen oder Unklarheiten gerne nocheinmal Fragen!

Wär ja ein Skandal wenn wir die Kristallkugeln vom Christbaum nehmen müssten!
Bitte warten ..
Mitglied: Pjordorf
26.12.2013 um 17:52 Uhr
Hallo,

Zitat von koeson8:
Es gibt keine Fehlermeldung aus, sondern läuft durch
Du startest deine Batchdatei aber schon in einem sogenannten CMD Fenster/ DOS Fenster aus, oder? Und wenn es keinen Fehler ausgibt, wie kommst du dann da drauf das es einen Fehler macht bzw. erzeugt?

Das Problem ist, dass es nur die letzte Datei in meinem Testordner umbenennt.
Dann tut deine Batch es doch wie du erwarten solltest.

Wenn ich es nocheinmal durchlaufen lasse, die Vorletzte
Oder nicht doch wieder die letzte (nur eben noch nicht umbenannte) deiner ????????.pdf Dateien?

§§1§§§Name§§§§§Name.pdf um...
Was ergibt ein dir /B ????????.pdf bei deinem uns unbekannten OS? Ich gehe davon aus aus du dich im richtigen Ordner bewegst...Hier steht zwar das es dann genau Acht Zeichen sein sollten (und auch sind ) mit der Endung .PDF aber, auch bei mir werden Dateien ausgespuckt mit weniger als 8 Zeichen sowie mit mehr als 8 Zeichen im Dateinamen. (Windows 7 Ult. SP1 64 Bit)
E:\>dir ????????.txt 
 Datenträger in Laufwerk E: ist Data 
 Volumeseriennummer: EE85-A833 
 
 Verzeichnis von E:\ 
 
24.05.2011  19:58               412 Neues Textdokument.txt 
18.05.2013  12:19               682 WLANs uebertragen.txt 
               2 Datei(en),          1.094 Bytes 
               0 Verzeichnis(se), 39.304.200.192 Bytes frei
Ein Dir /X ????????.txt liefert des Rätsels Lösung
E:\>dir /X ????????.txt 
 Datenträger in Laufwerk E: ist Data 
 Volumeseriennummer: EE85-A833 
 
 Verzeichnis von E:\ 
 
24.05.2011  19:58               412 NEUEST~1.TXT Neues Textdokument.txt 
18.05.2013  12:19               682 WLANSU~1.TXT WLANs uebertragen.txt 
               2 Datei(en),          1.094 Bytes 
               0 Verzeichnis(se), 39.304.200.192 Bytes frei
Aha, der Lange dateiname sowie der Kurze (8.3) dateiname werden beim DIr berücksichtigit...

Eigentlich würde ich gern alle 8-stelligen Dateinamen unter einmal umbenennen, und falls sie +/- als 8 Stellen haben sollen sie ignonriert werden.
Hmmm. Trivial, hört sich so an, aber dann kommen noch die redmonder Praktikantinen ins Spiel (wie einige hier zu sagen Pflegen).
http://stackoverflow.com/questions/11972572/how-can-i-delete-files-with ...

Gruß,
Peter
Bitte warten ..
Mitglied: bastla
26.12.2013, aktualisiert um 23:25 Uhr
Hallo koeson8 und willkommen im Forum!

Wenn zumindest einmal die Umbenennung richtig erfolgt, könnte das, basiend auf Deinem Code und ungetestet, etwa so gehen:
For /F %%i in ('dir /B ????????.pdf') do ren "%%i" "§§§1§§%%~ni§§§§§%%i"
Näheres dazu unter "for /?" (ziemlich gegen Ende der Ausgabe) bzw im einschlägigen Tutorial zur FOR-Schleife ...

Falls Du übrigens wirklich Variablen innerhalb der Schleife erzeugen und verwenden müsstest, wäre "delayedExpansion" Dein Stichwort.

[Edit]
Hinsichtlich der Beschränkung auf genau 8 Zeichen im Namen würde sich dann eher
for /f %%i in ('dir /b *.pdf^|findstr /irx "........\.pdf"') do ren "%%i" "§§§1§§%%~ni§§§§§%%i"
anbieten.
[/Edit]

Grüße
bastla
Bitte warten ..
Mitglied: koeson8
26.12.2013 um 23:23 Uhr
Hallo Peter und Bastla!

Danke vielmals für eure Hilfe!!!

Weiter gebracht hat mich:

Zitat von bastla:

Hinsichtlich der Beschränkung auf genau 8 Zeichen im Namen würde sich dann eher
for /f %%i in ('dir /b *.pdf^|findstr /irx "........\.pdf"') do ren 
> "%%i" "§§§1§§%%~ni§§§§§%%i" 
> 
anbieten.

Funktioniert wirklich sauber!

Der einzige kleine Schönheitsfehler ist, dass es statt § immer ° schreibt - womit könnte das zu tun haben?

@Peter: ich habe eine *.bat Datei gemacht und führe den code per Doppelklick aus...
@bastla: könntest du mir von ...('dir /b *.pdf^|findstr /irx "........\.pdf"')... die Funktionsweise und was dahinter steckt erklären?

Nochmal großes DANKE an euch 2!
Bitte warten ..
Mitglied: bastla
27.12.2013 um 00:15 Uhr
Hallo koeson8!

Vorweg zu
Der einzige kleine Schönheitsfehler ist, dass es statt § immer ° schreibt - womit könnte das zu tun haben?
Das hat mit dem Unterschied zwischen ANSI (Windows) und ASCII (CMD) zu tun und lässt sich durch Umstellen der Code-Page von (normalerweise) 850 auf 1252 per
chcp 1252
oder die Verwendung eines Editors, der eben ASCII-codiert speichern kann, beheben. Allenfalls kannst Du im Windows-Editor auch das Zeichen
õ
verwenden.
Zur Funktionsweise von "^|findstr /irx "........\.pdf" ("{dir /b" hattest Du ja selbst schon verwendet): Es wird damit einfach jede Zeile der Ausgabe (= jeder Dateiname) durch einen Filter geschickt ("gepiped" - in der Schleife ist anstatt | die "escapte" Fassung ^| zu verwenden), der nur genau (wird duch "/x" erreicht; das "r" wäre nicht unbedingt erforderlich)
  • 8 beliebige Zeichen (.),
  • einen Punkt (die Schreibweise "\." sorgt dafür, dass eben nicht irgendein Zeichen, sondern nur ein Punkt an dieser Stelle akzeptiert wird) und
  • pdf (wegen des "/i" ohne Unterscheidung zwischen Groß- und Kleinbuchstaben)
"durchlässt", sodass nur die passenden Dateinamen zur weiteren Verarbeitung zur Verfügung stehen - siehe dazu "findstr /?" ...

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...