stoffal02

VB Script Dateiendungen umbenennen

Hallo zusammen.

Leider habe ich vom Programmieren soviel Ahnung wie von der chinesischen Sprache. Ich habe das halbe Wochenende damit verbracht das Script selber zu schreiben, nur leider gelingt mit das nicht.

Mein Problem ist folgendermaßen: Ich habe ein Programm laufen, welches einen Ordner überwacht und wenn da eine .csv Datei hineingespeichert wird, liest dieses Programm die Datei aus und druckt die Daten daraus auf ein Etikett. Diese .csv Datei soll am Ende des Druckvorganges in eine .txt Datei umgewandelt werden um nicht versehentlich die Datei nochmals zu drucken. Dazu kann ich im Anschluss an den Druck ein VBScript ausführen lassen. Kann mir da irgendjemand weiterhelfen?

Besten Dank Stoffal02
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 665234

Url: https://administrator.de/forum/vb-script-dateiendungen-umbenennen-665234.html

Ausgedruckt am: 25.04.2025 um 03:04 Uhr

colinardo
Lösung colinardo 29.03.2021 aktualisiert um 15:21:04 Uhr
Goto Top
Servus @Stoffal02, willkommen auf Administrator.de!
Ich würde die Files ja statt sie umzubenennen in ein Backup-Verzeichnis verschieben statt sie umzubenennen
back-to-topVariante Verschieben
' Ordner mit Dateien  
FOLDER = "F:\quelle"  
' Ordner zur Ablage der fertigen Dateien  
FOLDER_READY = "F:\quelle\backup"  
Set fso = CreateObject("Scripting.FileSystemObject")  
If Not fso.FolderExists(FOLDER) then
    msgbox "Quell-Ordner'" & FOLDER & "' existiert nicht!",vbExclamation  
    wscript.quit
End if
' Ablage Ordner erstellen wenn nicht vorhanden  
If Not fso.FolderExists(FOLDER_READY) Then fso.CreateFolder FOLDER_READY

For Each file In fso.GetFolder(FOLDER).Files
    newname = file.Name
    cnt = 1
    while fso.FileExists(FOLDER_READY & "\" & newname)  
        newname = fso.GetBaseName(file.Path) & "_" & cnt & "." & fso.GetExtensionName(file.Name)  
        cnt = cnt + 1
    Wend
    fso.MoveFile file.Path, (FOLDER_READY & "\" & newname)  
Next
Aber wenn du unbedingt umbenennen willst auch das geht natürlich
back-to-topVariante umbenennen
FOLDER = "F:\quelle"  
Set fso = CreateObject("Scripting.FileSystemObject")  
If Not fso.FolderExists(FOLDER) then
    msgbox "Quell-Ordner existiert nicht!",vbExclamation  
    wscript.quit
End if
For Each file In fso.GetFolder(FOLDER).Files
  if LCase(fso.GetExtensionname(file.Name)) <> "txt" then  
    newname = fso.GetBaseName(file.Path) & ".txt"  
    cnt = 1
    while fso.FileExists(fso.GetParentFolderName(file.Path) & "\" & newname)  
        newname = fso.GetBaseName(file.Path) & "_" & cnt & ".txt"  
        cnt = cnt + 1
    wend
    file.Name = newname
  end if
Next
Ordner in den ersten Zeilen jeweils an deine Bedürfnisse anpassen
Grüße Uwe
Stoffal02
Stoffal02 29.03.2021 um 13:45:01 Uhr
Goto Top
Vielen Dank für die schnelle und kompetente Antwort, funktioniert bestens!
Stoffal02
Stoffal02 29.03.2021 um 14:16:38 Uhr
Goto Top
Hallo.

Leider schreibt er jetzt bei jeder Datei ein _1 hinter den Namen. Wenn ich nun 5 .csv Datein umbenannt habe, dann steht hinter der ersten Date...._1_1_1_1_1 hinter der zweiten Datei ...._1_1_1_1 usw. Ich habe da doch einige hundert Datein in der Woche, das wird ein ziemlich langer Dateinname. Wie kann man das wegbekommen? muss man da einfach das cnt=cnt+1 streichen?
colinardo
colinardo 29.03.2021 aktualisiert um 15:25:33 Uhr
Goto Top
Es kann nur eine Datei mit dem selben Namen in ein und dem selben Verzeichnis geben!
Deswegen vergibt das Skript einen neuen eindeutigen mit einer angehängten Nummer an dem neuen Dateinamen sollte bereits eine mit dem gleichen Namen dort liegen, ohne diese Maßnahme würde das Skript logischerweise beim Umbenennen einen Fehler werfen das der Name schon vergeben ist! Wenn du das nicht willst musst du die alte Datei schon anders eindeutig benennen oder diese vorher durch das Skript löschen lassen. Das musst du schon klar definieren, deinen Workflow kennen wir hier ja nicht.
Stoffal02
Stoffal02 29.03.2021 um 15:42:09 Uhr
Goto Top
Ich schreibe z.B. alle paar Minuten eine neue .csv Datei in den Ordner. Der Dateiname ist das das Datum plus eine SSCC Nummer. Somit kann eine .csv Datei nie den gleichen Namen haben wie eine andere (eine SSCC Nummer ist eine einzigartige Logistiknummer). Mein Problem momentan ist eher, dass er bei den schon umbenannten .txt Datein die Nummern hinten dranschreibt, sobald er eine Datei von .csv in .txt umwandelt
colinardo
colinardo 29.03.2021 aktualisiert um 15:49:26 Uhr
Goto Top
OK, dann wahr wohl eine alte Version des Codes im Browser Cache, hatte den Code oben nachträglich noch korrigiert.
Also nochmal kopieren, dann sollte der Umstand weg sein.
Stoffal02
Stoffal02 29.03.2021 um 15:54:54 Uhr
Goto Top
ok, besten Dank für die rasche Hilfe, jetzt funktioniert es einwandfrei