plbot85
Goto Top

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

Content-ID: 277630

Url: https://administrator.de/forum/dateien-umbenennen-277630.html

Ausgedruckt am: 10.04.2025 um 02:04 Uhr

beidermachtvongreyscull
beidermachtvongreyscull 17.07.2015 aktualisiert um 10:09:04 Uhr
Goto Top
Ich hab mal auf die Schnelle ein bißchen was in VBScript gebastelt.
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.
PLBot85
PLBot85 17.07.2015 um 10:31:34 Uhr
Goto Top
Funktioniert sehr gut. Bräuchte es aber als Batch. Muss da noch Ändrtungen vornehmen.
beidermachtvongreyscull
beidermachtvongreyscull 17.07.2015 aktualisiert um 10:47:43 Uhr
Goto Top
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
Biber
Biber 17.07.2015, aktualisiert am 02.08.2015 um 14:17:11 Uhr
Goto Top
Moin PLBot85,

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
[/Edit]
PLBot85
PLBot85 17.07.2015 um 21:35:07 Uhr
Goto Top
Zitat von @Biber:

Moin PLBot85,

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
> 
[/Edit]

Hi...

danke hat funktioniert... aber was sagt denn die !datum! aus? Dachte um Strings anzugeben ist es %?
Biber
Biber 17.07.2015, aktualisiert am 02.08.2015 um 14:17:51 Uhr
Goto Top
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