marco78
Goto Top

BATCH Dateinamen auslesen und an variabler Stelle x Zeichen auschneiden und am Ende wieder einfügen

Ich habe folgendes Problem.

Ich möchte Dateinamen um einen bestimmten Teil ändern damit ich diese sortieren kann.

Ist Zustand (ca. 250 Files in einem Ordner):

Formieren2_22052015Z0501.xlsx
Formieren1_11072014Z0408.xlsx
Vorladen_15092015Z0408.xlsx
Vorladen_15092015Z0501.xlsx

Soll Zustand:

Formieren2_Z0501_22052015.xlsx
Formieren1_Z0408_11072014.xlsx
Vorladen_Z0408_15092015.xlsx
Vorladen_Z0501_15092015.xlsx

Beschreibung:

Es soll nach folgendem Zeichen "_" die nächsten 8 Zeichen (Datum) ausgeschnitten werden und am Ende eingefügt werden, zudem soll für eine bessere Übersichtlichkeit vor das Datum noch ein "_" eingesetzt werden (siehe Soll Zustand)

Ich hoffe ich konnte dies einigermaßen Verständlich erklären.

Lösen möchte ich das nur per skript -> Batch , also bitte keine Tools nennen.

Ich bedanke mich schonmal im Voraus für eure Hilfe ohne dieser ich aufgeschmissen wäre

384f340121bc5796e9c09736f0a1d2ff

Content-Key: 284901

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

Printed on: April 18, 2024 at 08:04 o'clock

Mitglied: 114757
114757 Oct 07, 2015 updated at 20:42:08 (UTC)
Goto Top
Moin,
ungetestet z.B. so
(Skript ist zum Testen noch nicht scharf geschaltet, wenn die Ausgabe dem Gewünschten entspricht, in Zeile 8 das "echo" am Zeilenanfang entfernen)
@echo off & setlocal Enabledelayedexpansion
set "ordner=c:\ordner"  
for %%a in ("%ordner%\*.xlsx") Do @(  
   for /f "tokens=1,2 delims=_" %%b in ("%%~na") do @(  
       set "dpart=%%c"  
       set "filedate=!dpart:~0,8!"  
       set "rest=!dpart:~8!"  
       echo ren "%%a" "%%b_!rest!_!filedate!%%~xa"  
   )
)

Powershell:
gci C:\Ordner\*.xlsx | Rename-Item -NewName {"$($_.Basename -replace '^(.*?_)(\d{8})(.*)','$1$3_$2')$($_.Extension)"} -Force  
Gruß jodel32
Member: Marco78
Marco78 Oct 07, 2015 at 18:23:58 (UTC)
Goto Top
Hallo jodel32,

danke erstmal für deine schnelle Hilfe,

habe dein Script per Notepad++ erstellt und als Batch file (*bat....) im betrefenden Ordner abgespeichert.

Auführen aber ohne Erfolg.
Anschließend habe ich den Dateipfad im Script geändert (siehe oben angefügtes Bild), auch ohne Erfolg.

Was mache ich falsch!!! Bin absoluter Neuling face-sad
Mitglied: 114757
114757 Oct 07, 2015 updated at 20:44:39 (UTC)
Goto Top
kleiner Typo, ist oben korrigiert, sorry.
Member: Nemo-G
Nemo-G Oct 07, 2015 updated at 22:16:20 (UTC)
Goto Top
Nur mal so in die Diskussion geworfen:
Warum bereitest Du den Teil, der offensichtlich ein Datum ist, nicht gleich ähnlich der ISO-Norm 8601 auf?
Heute wäre dann nicht 08102015, sondern 20151008. Auch die angelsächsische Schreibweise in der Form mmttyyy ist nicht unbedingt zielführend, wenn man chronologisch sortieren will.

Gruß, Nemo-G
Member: Marco78
Marco78 Oct 08, 2015 at 05:10:31 (UTC)
Goto Top
Servus Nemo-G,

prinzipiell gebe ich dir recht, da ich aber schon froh bin wenn man mir bei meinem eigentlichen Problem hilft, wollte ich hier niemanden unötig Arbeit zumuten.
Da dieses Problem für mich nur zweitrangig ist und das Datum nur benötigt wird fals es eine zweite Datei mit der selben Spezifikation gibt.

Gruss Marco 78
Mitglied: 114757
Solution 114757 Oct 09, 2015, updated at Oct 18, 2015 at 10:21:32 (UTC)
Goto Top
Wenns das dann war, den Beitrag bitte noch auf gelöst setzen.