Top-Themen

Aktuelle Themen (A bis Z)

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

Mehrere Dateien nach bestimmtem Muster umbenennen

Frage Entwicklung Batch & Shell

Mitglied: martinstein

martinstein (Level 1) - Jetzt verbinden

01.08.2010, aktualisiert 15:56 Uhr, 5678 Aufrufe, 7 Kommentare, 2 Danke

Hallo zusammen,

kurz vorab: Ja, ich habe die Suche benutzt, verschiedene Sachen gefunden und ausprobiert. Und nein, es hat nicht geklappt, dafür kenn ich mich mit der Materie leider nicht gut genug aus.

Ich habe einen Ordner voll mit Dateien mit den Endungen .txt und .dat. Jeweils eine .txt-Datei und eine .dat-Datei gehören paarweise zusammen und haben außer der Endung den exakt gleichen Namen. Der Namensaufbau ist immer so: Protokoll_20100801-151901-203.txt bzw. Protokoll_20100801-151901-203.dat

Folgende Probleme versuche ich nun per Batch zu lösen:

1. Der Unterstrich soll durch ein Leerzeichen ersetzt werden
2. Das letzte Minus und die dreistellige Zahl dahinder sollen entfernt werden
3. Die restlichen Minus-Zeichen sollen durch Leerzeichen ersetzt werden
4. Die erste lange Zahl (im Beispiel 20100801) ist ein Datum und soll so von Minus-Zeichen unterbrochen werden, dass es 2010-08-01 heißt
5. Die zweite lange Zahl (im Beispiel 151901) ist eine Uhrzeit und soll so von Minus-Zeichen unterbrochen werden, dass es 15-19-01 heißt

Jeder Wink in die richtige Richtung ist willkommen.

Vielen Dank im Voraus für eure Hilfe und viele Grüße

Martin
Mitglied: LotPings
01.08.2010 um 16:17 Uhr
Hallo Martin,

so schwer ist das doch mit einer (oder auch zwei) for-schelifen nicht.
Von tokens und delims hast du ja bestimmt auch schon gelesen, damit das Aufsplitten von Datum/Zeit einfacher geht kommt noch eine Subroutine dazu.

Was has du denn schon an Code vorliegen ?

Gruß
LotPings
Bitte warten ..
Mitglied: bastla
01.08.2010 um 16:29 Uhr
Hallo martinstein!

Das könnte etwa so gehen:
01.
@echo off & setlocal 
02.
set "Ordner=D:\Der wo voll mit Dateien ist" 
03.
set "Dateien=*_*-*-*.txt *_*-*-*.dat" 
04.
 
05.
pushd "%Ordner%" 
06.
for /f %%i in ('dir /b /a-d %Dateien% 2^>nul') do for /f "tokens=1-3 delims=_-" %%a in ("%%i") do ( 
07.
    set "Datum=%%b" 
08.
    set "Zeit=%%c" 
09.
    call :ProcessFile "%%i" "%%a" 
10.
11.
popd 
12.
goto :eof 
13.
 
14.
:ProcessFile 
15.
echo ren %1 "%~2 %Datum:~,4%-%Datum:~4,2%-%Datum:~6,2% %Zeit:~,2%-%Zeit:~2,2%-%Zeit:~4,2%%~x1" 
16.
goto :eof
Für die Testphase steht vor dem Befehl zum Umbenennen (Zeile 15) noch ein "echo" - damit wird nur angezeigt, was passieren würde, wenn Du das "echo" entfernst.

Da wir gerade "Code-Qualitäts-Wochen" haben , eine kurze Erläuterung des Ablaufes:

Nach dem Wechseln in den Ordner mit den vielen Dateien wird in der ersten "for"-Schleife nach allen zum Dateimuster (den Dateimustern) passenden Dateien gesucht.
Für jede der gefundenen Dateien erfolgt eine Zerlegung des Dateinamens anhand der Trennzeichen "_" und "-", wobei nur die ersten 3 Bestandteile ("tokens") verwendet werden. %%a enthält den Teil vor dem "_" und kann daher unverändert bleiben, in %%b und %%c stehen Datum und Uhrzeit - damit diese in weiterer Folge zerlegt werden können, werden sie Variablen zugewiesen.
Der komplette Dateiname (%%i) und der Teil %%a werden nun als Parameter an das die eigentliche Arbeit leistende Unterprogramm ":ProcessFile" übergeben (die Variablen %Datum% und %Zeit% stehen dort auch zur Verfügung).

In besagtem Unterprogramm wird für die Umbenennung der neue Name stückweise zusammengefügt:
%%a wurde als zweiter Parameter übergeben und kommt daher als %2 an - da er bei der Übergabe vorsichtshalber (falls dieser Bestandteil Leerzeichen enthielte) unter Anführungszeichen gesetzt wurde, müssen diese nun wieder entfernt werden - Schreibweise daher: %~2
Aus der Variable %Datum% werden einzeln Jahr (erste 4 Stellen), Monat (4 Stellen überspringen, dann 2 Stellen) und Tag (6 Stellen überspringen, dann 2 Stellen) extrahiert und, durch "-" verbunden, in den neuen Namen eingebaut.
Die Zerlegung und Neu-Zusammensetzung der Uhrzeit erfolgt auf die gleiche Weise.
Schließlich wird noch der "Original"-Datentyp (aus dem kompletten Dateinamen = Parameter 1 = %1 mit %~x1" entnommen) hinzugefügt.

Grüße
bastla

[Edit] Fehlendes %-Zeichen ergänzt (von wegen "Code-Qualität" ) [/Edit]
Bitte warten ..
Mitglied: martinstein
01.08.2010 um 16:53 Uhr
Hallo,

vielen, vielen Dank! bastlas Lösung macht zwar zunächst GENAU was sie soll, aber wenn's an das Anhängen der Dateiendung geht, verpasst das Script den .txt-Dateien die Endung ~x1 (ohne Punkt) und will dann offenbar den .dat-Dateien auch die Endung ~x1 verpassen, streikt ab da aber komplett! Sieht jemand das letzte Puzzlestück?

Viele Grüße

Martin

P.S. LotPings, ich hatte was mit tokens und delims probiert, bin aber grandios gescheitert...
Bitte warten ..
Mitglied: LotPings
01.08.2010 um 17:11 Uhr
Zitat von martinstein:
Hallo,

vielen, vielen Dank! bastlas Lösung macht zwar zunächst GENAU was sie soll, aber wenn's an das Anhängen der
Dateiendung geht, verpasst das Script den .txt-Dateien die Endung ~x1 (ohne Punkt) und will dann offenbar den .dat-Dateien auch
die Endung ~x1 verpassen, streikt ab da aber komplett! Sieht jemand das letzte Puzzlestück?
Das eine %-Zeichen vor ~x1 musst du nur verdoppeln

P.S. LotPings, ich hatte was mit tokens und delims probiert, bin aber grandios gescheitert...
Nunja bastla hat dir das, was ich Kopf hatte, schon vorzeitg verraten - mein didaktischer Versuch wurde torpediert
Ansonsten natürlich ein vorbildlich kommentierter Batch.

Gruß
LotPings
Bitte warten ..
Mitglied: bastla
01.08.2010 um 18:58 Uhr
@LotPings
Sorry wegen des Torpedos (den hatte ich schon auf die Reise geschickt, bevor ich Deinen Kommentar gesehen hatte), und danke für's Aushelfen ...

... wobei genau genommen das %-Zeichen nicht verdoppelt, sondern das fehlende %-Zeichen (am Ende von "%Zeit:~4,2%" oder eben für "%~x1") ergänzt werden muss (hatte ich leider beim Posten verschlimmbessert, korrigiere das aber - der Ordnung halber - auch oben noch) ...

Grüße
bastla
Bitte warten ..
Mitglied: martinstein
01.08.2010 um 22:09 Uhr
Nochmals vielen Dank - das hat geklappt. Das mit dem for hätte ich ja VIELLEICHT noch hinbekommen, aber spätestens bei dem ren wäre dann Ende gewesen :o(
Bitte warten ..
Mitglied: Biber
02.08.2010 um 09:45 Uhr
[OT]

Moin alle,

eine so klar formulierte Umbenenn-Frage und so sauber hergeleitete Lösungen habe ich schon mehrere Montage nicht vorgefunden hier.

Danke an euch alle drei.

Grüße
Biber
[/OT]
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
BAT Datei zum Löschen bestimmter Dateien nach Muster in mehreren Ordnern und Unterordnern
gelöst Frage von AndreasGiBatch & Shell3 Kommentare

Hallo Forum! folgende Konstellation: nach mehr oder weniger erfolgreicher Datenrettung habe ich knapp 400 GB an Daten. Darunter ist ...

Ubuntu
Vor- und Nachnamen mit einem bestimmten Muster aus einer Textdatei löschen
gelöst Frage von takitanoUbuntu15 Kommentare

Ok. Meine letzte Frage war ein bisschen undeutlich formuliert. Also hier ist ein neuer Versuch. Ich habe drei Text-Dateien: ...

Batch & Shell
Dateien mit bestimmten Namen in allen Unterordnern umbenennen
Frage von koehneBatch & Shell2 Kommentare

Hi, ich bräuchte mal fix eure Hilfe, weil ich nicht weiterkomme. Ich habe in einem Ordner mehrere Unterordner. In ...

Batch & Shell
Nach Muster von Dateien, diese hochzählen
gelöst Frage von Erik72Batch & Shell12 Kommentare

Hallo zusammen, die führenden Nullen-Aufgabe von heute morgen habe ich so gelöst: #!/bin/sh x=1 for fname in /Verzeichnis/*.abc do ...

Neue Wissensbeiträge
Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 21 StundenViren und Trojaner1 Kommentar

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 1 TagRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 4 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 5 TagenWebbrowser8 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Heiß diskutierte Inhalte
Batch & Shell
Trusted Sites für alle User auf dem PC einpflegen
Frage von xXTaKuZaXxBatch & Shell12 Kommentare

Aufgabestellung: Es sollen auf 1 PC (bzw. mehreren PCs) vertrauenswürdige Sites per Powershell eingetragen werden, die für alle User ...

Windows 10
Probleme mit Dateien, deren Pfad + Dateiname länger als 256 Zeichen sind
Frage von FalaffelWindows 1011 Kommentare

Guten Tag, unter Windows 10 scheint es immer noch das Problem zu geben, dass der Pfad + Dateiname einer ...

Vmware
DOS 6.22 in VMWare mit CD-ROM
gelöst Frage von hesperVmware10 Kommentare

Hallo zusammen! Ich hab ein saublödes Problem. Es ist eine VMWare mit DOS 6.22 zu erstellen auf dem ein ...

Microsoft Office
Outlook 2016 - Makro startet nicht über Knopf im Menüband
Frage von ZunarasMicrosoft Office9 Kommentare

Schönen guten Tag! ich brauche wieder einmal Hilfe. Ich möchte gerne von Office 2010 32bit auf 2016 64bit wechseln ...