Dateien Umbenennen
Hi,
ich habe einen Ordner wo mehrer Dateien drin liegen.
20150316_121757_92636382965528_WMA1847GK62_TDOBB112.ddd
20150314_085730_73826383950256_WMA18263926_TDOBB236.ddd
etc.....
Die sollen jetzt mittels einer Batchdatei umbenannt werden.
V_TDO_BB_112_2015-03-16_121757.ddd
V_TDO_BB_236_2015-03-14_085730.ddd
etc....
Ich habe wie folgt angefangen:
@echo off
set source="Z:\Ablage\Neuer Ordner\*.*"
For /F "delims=_ tokens=1,2,3,4,5" %%a IN (' dir %source% /B ') do (
set Datum=%%a
set Auto=%%e
set var1=%%b
ren %%a_%%b_%%c_%%d_%%e V_%auto%_%datum%_%var1%.ddd
)
Funktioniert so nicht.
Hat wer eine idee?
LG
Kai
ich habe einen Ordner wo mehrer Dateien drin liegen.
20150316_121757_92636382965528_WMA1847GK62_TDOBB112.ddd
20150314_085730_73826383950256_WMA18263926_TDOBB236.ddd
etc.....
Die sollen jetzt mittels einer Batchdatei umbenannt werden.
V_TDO_BB_112_2015-03-16_121757.ddd
V_TDO_BB_236_2015-03-14_085730.ddd
etc....
Ich habe wie folgt angefangen:
@echo off
set source="Z:\Ablage\Neuer Ordner\*.*"
For /F "delims=_ tokens=1,2,3,4,5" %%a IN (' dir %source% /B ') do (
set Datum=%%a
set Auto=%%e
set var1=%%b
ren %%a_%%b_%%c_%%d_%%e V_%auto%_%datum%_%var1%.ddd
)
Funktioniert so nicht.
Hat wer eine idee?
LG
Kai
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 277630
Url: https://administrator.de/forum/dateien-umbenennen-277630.html
Ausgedruckt am: 10.04.2025 um 02:04 Uhr
6 Kommentare
Neuester Kommentar
Ich hab mal auf die Schnelle ein bißchen was in VBScript gebastelt.
Achtung. Es ist u.U. fehlerbehaftet. Hab keine Zeit zum Testen.
Teste das bitte vorher erst in einer Versuchsumgebung.
Nicht vergessen, dass Du das Arbeitsverzeichnis einstellen musst.
Den Code in eine .vbs-Datei speichern.
Achtung. Es ist u.U. fehlerbehaftet. Hab keine Zeit zum Testen.
Dim sName
Dim fso
Dim fol
' Objekt erzeugen
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
' Arbeitsverzeichnis festlegen
Set fol = fso.GetFolder("c:\TEST")
' sequenzielle Abarbeitung aller Dateien im Arbeitsverzeichnis
For Each fil In fol.Files
' vorderer Teil (alles vor dem "." des Dateinamens) in Variable strAlterName speichern
strAlterName = fso.GetBaseName(fil)
' Zerlegungen des Basisnamens (substring-bildung)
strJahr = Mid(strAlterName,1,4)
strMonat = Mid(strAlterName,5,2)
strTag = Mid(strAltername,8,2)
strUhrzeit = Mid(strAlterName,10,6)
strAuto = Mid(strAlterName,44,3)
strAuto2 = Mid(strAlterName,47,2)
strAuto3 = Mid(strAlterName,49,3)
' Datei umbenennen
strNeuerName = "V_"&strAuto&"_"&strAuto2&"_"&strAuto3&"_"&strJahr&"_"&strMonat&"_"&strTag&"_"&strUhrzeit&".ddd"
fil.Name = strNeuerName
Next
Teste das bitte vorher erst in einer Versuchsumgebung.
Nicht vergessen, dass Du das Arbeitsverzeichnis einstellen musst.
Den Code in eine .vbs-Datei speichern.
Wieso als Batch?
Sind das reine DOS-Maschinen?
Bei Batch kann ich leider nicht helfen. Sorry.
Schau mal hier: http://www.dostips.com/DtTipsStringManipulation.php und hier: http://www.dostips.com/DtTipsStringOperations.php
Sind das reine DOS-Maschinen?
Bei Batch kann ich leider nicht helfen. Sorry.
Schau mal hier: http://www.dostips.com/DtTipsStringManipulation.php und hier: http://www.dostips.com/DtTipsStringOperations.php
Moin PLBot85,
ergänzend zu den Anmerkungen von Gersen zu einer CMD-Variante noch
Hinweis 4: Statt
Hinweis 5: die Variablen %auto% und %datum% willst du ja optisch aufbereiten.
Das ginge am Beispiel %auto% so;
Hinweis 6: wenn du nicht die bereits umbenannten Daten versehentlich nochmals umbenamsen willst, dann solltest du deine Variable %source% anpassen.
Mit
Mit
Grüße
Biber
[Edit] Nanu, der Kommentar von Gersen ist gelöscht??.
Also nochmal als ungetestete Skizze basierend auf der Vorarbeit von Gersen:
[/Edit]
ergänzend zu den Anmerkungen von Gersen zu einer CMD-Variante noch
Hinweis 4: Statt
cd %source%
nimm lieber pushd %source%
Hinweis 5: die Variablen %auto% und %datum% willst du ja optisch aufbereiten.
Das ginge am Beispiel %auto% so;
...
Set auto=%%e
REM Inhalt ist jetzt zb "TDOBB236"
Set auto=!auto:~0,3!_!auto:~3,5!
REM Inhalt ist jetzt zb "TDO_BB236"
Hinweis 6: wenn du nicht die bereits umbenannten Daten versehentlich nochmals umbenamsen willst, dann solltest du deine Variable %source% anpassen.
Mit
set source="Z:\Ablage\Neuer Ordner\*.*"
erwischt du alle Dateien.Mit
set source="Z:\Ablage\Neuer Ordner\201*.*"
erwischt du alle Dateien, die mit dem Datum (2015...") beginnen - und nur die willst du umbenennen.Grüße
Biber
[Edit] Nanu, der Kommentar von Gersen ist gelöscht??.
Also nochmal als ungetestete Skizze basierend auf der Vorarbeit von Gersen:
@echo off & Setlocal EnableDelayedExpansion
set source="Z:\Ablage\Neuer Ordner\201*.*"
For /F "delims=_ tokens=1,2,3,4,5" %%a IN (' dir %source% /B ') do (
set Datum=%%a
set Auto=%%e
Set auto=!auto:~0,3!_!auto:~3,5!
Set datum=!datum:~0,4!-!datum:~4,2!-~0,4!-!datum:~7,2!
set var1=%%b
ren %%a_%%b_%%c_%%d_%%e V_%auto%_%datum%_%var1%.ddd
Moin PLBot85,
ja, CMD-Variablen werden in der Schreibweise %variable% verwendet, ausser bei "verzögerter Auflösung"/delayed expansion.
Das ist ein Sonderfall, den du brauchst, wenn du Variablen innerhalb einer CMD-Anweisung setzt und wieder verwendest/ausliest.
Die EINE CMD-Anweisung ist die "FOR /F"-Anweisung, das Äuslesen innerhalb dieser Anweisung passiert in den SETs und Stringmanipulationen.
Näheres zu delayed expansion über jede handelsübliche Suchmaschine oder unsere Forums-Suchfunktion.
Grüße
Biber
ja, CMD-Variablen werden in der Schreibweise %variable% verwendet, ausser bei "verzögerter Auflösung"/delayed expansion.
Das ist ein Sonderfall, den du brauchst, wenn du Variablen innerhalb einer CMD-Anweisung setzt und wieder verwendest/ausliest.
Die EINE CMD-Anweisung ist die "FOR /F"-Anweisung, das Äuslesen innerhalb dieser Anweisung passiert in den SETs und Stringmanipulationen.
Näheres zu delayed expansion über jede handelsübliche Suchmaschine oder unsere Forums-Suchfunktion.
Grüße
Biber