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-Key: 277630

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

Printed on: April 19, 2024 at 02:04 o'clock

Member: beidermachtvongreyscull
beidermachtvongreyscull Jul 17, 2015 updated at 08:09:04 (UTC)
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.
Member: PLBot85
PLBot85 Jul 17, 2015 at 08:31:34 (UTC)
Goto Top
Funktioniert sehr gut. Bräuchte es aber als Batch. Muss da noch Ändrtungen vornehmen.
Member: beidermachtvongreyscull
beidermachtvongreyscull Jul 17, 2015 updated at 08:47:43 (UTC)
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
Member: Biber
Biber Jul 17, 2015, updated at Aug 02, 2015 at 12:17:11 (UTC)
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]
Member: PLBot85
PLBot85 Jul 17, 2015 at 19:35:07 (UTC)
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 %?
Member: Biber
Biber Jul 17, 2015, updated at Aug 02, 2015 at 12:17:51 (UTC)
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