staga75
Goto Top

Mit VBS Dateien umbenennen

Hallo Leute

Als VBS Anfänger bräuchte dringend eure Hilfe und hoffe das mir jemand weiterhelfen kann.
Ich möchte gerne via VBS diverse Files umbenennen. Leider habe ich via Suche im Forum nichts passendes gefunden. Was ich möchte ist folgendes:

Alle Files im Ordner C:\Test\
123987_FB1_1864120_3260730_55.PDF
123987_FB1_1864144_3260790_55.PDF
123987_FB1_1864160_3260711_55.PDF
usw.

sollen umbenannt werden auf
123987_FB1_1864120_bhf_55.PDF
123987_FB1_1864144_bhf_55.PDF
123987_FB1_1864160_bhf_55.PDF
usw.

Ebenso sollen alle Files im Ordner C:\Test\
123987_XG1_1855546.XML
123987_XG1_1845122.XML
123987_XG1_2587122.XML

umbenannt auf
123987_XG1_1855546.ASD
123987_XG1_1845122.ASD
123987_XG1_2587122.ASD

Zur Info:
Im Verzeichnis C:\Test\ liegen noch weitere Files welche gleich aufgebaut sind jedoch andere Nummern haben. Ich möchte also nur die files umbenennen welche den Namen 123987_FB1_*_*_55.PDF und 123987_XG1_***.XML haben.


Ich wäre sehr dankbar wenn mir jemand weiterhelfen kann.

Content-Key: 178719

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

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

Member: bastla
bastla Jan 11, 2012 at 11:03:19 (UTC)
Goto Top
Hallo staga75!

Könnte (ungetestet) etwa so gehen:
Ordner = "C:\test"  
Dateien1 = "123987_FB1_.+_.+_55\.PDF"  
Dateien2 = "123987_XG1_.+\.XML"  

Set fso = CreateObject("Scripting.FileSystemObject")  
Set rE = New RegExp
rE.IgnoreCase = True

For Each File In fso.GetFolder(Ordner).Files
    rE.Pattern = Dateien1
    If rE.Test(File.Name) Then
        FileParts = Split(File.Name, "_") 'Dateinamen anhand des Trennzeichens "_" zerlegen und ...  
        NameNew = FileParts(0) & "_" & FileParts(1) & "_" & FileParts(2) & "_bhf_" & FileParts(4) '... neu zusammensetzen  
        'File.Name = NameNew  
        WScript.Echo File.Name & " --> " & NameNew  
    End If

    rE.Pattern = Dateien2
    If rE.Test(File.Name) Then
        NameNew = fso.GetBaseName(File.Name) & ".ASD" 'Dateinamen ohne Typ mit ".ASD" ergänzen  
        'File.Name = NameNew  
        WScript.Echo File.Name & " --> " & NameNew		  
    End If
Next
Zum Testen aus einem CMD-Fenster mit
cscript "D:\RenameScript.vbs"
starten, da wegen der "WScript.Echo"-Ausgaben ansonsten für jede passende Datei eine MsgBox angezeigt würde ...

Die "Datei-Muster" werden per RegEx geprüft - daher die entsprechende Schreibweise in den Zeilen 2 und 3 (siehe dazu zB http://msdn.microsoft.com/en-us/library/ms974570.aspx oder die VBS-Hilfe) ...

Wenn die Tests erfolgreich waren und tatsächlich umbenannt werden soll, die Kommentarzeichen in den Zeilen 14 und 21 entfernen; die Zeilen 15 und 22 können dann entfernt oder auskommentiert werden).

Grüße
bastla
Member: staga75
staga75 Jan 11, 2012 at 12:04:46 (UTC)
Goto Top
Hallo bastla

Vielen dank für die schnelle Antwort und "wow" für die super Vorlage. Ich habe das ganze bereits getestet und es funktioniert einwandfrei. Super face-smile

Herzlichen Dank und einen angenehmen Nachmittag.

Gruss
Staga
Member: staga75
staga75 Jan 11, 2012 at 12:14:47 (UTC)
Goto Top
Hallo bastla

Noch ne kleine Frage ich hoffe ich bereite dir nicht zu grossen Aufwand:

Was muss ich machen wenn ich die Dateien welche ich umbenannt habe in das Verzeichnis C:\Temp\Kunde verschieben möchte.

Gruss
Staga
Member: staga75
staga75 Jan 11, 2012 at 12:27:21 (UTC)
Goto Top
Hallo bastla

ich habs selber geschafft, sorry falls du dich schon meiner Bitte angenommen hast.

Gruss
Staga