Automatismus für PDF (Umbenennung mit Datum und Uhrzeit danach in Ordner verschieben) mit einem VBS
Hallo liebe Gemeinde,
ich habe folgendes Problem:
ich bekomme aus einem Kassen-Auswertungssystem eine PDF generiert und in "Ordner X" abgelegt. Ich will diese PDF mit einem Datum und Uhrzeit versehen (umbenennen) und in einen anderen Ordner verschieben lassen. Dieser Prozess sollte im Hintergrund laufen. Hier mein Ansatz:
---
Nachteil bei meiner Version:
wenn keine Datei im Ordner Script startet nicht ( soll ja dauerhaft laufen)
dateien müssen 1 heißen ( soll alle PDF´s mit datum und Uhrzeit versehen)
Danke schonmal im vorraus.
LG
Andy
ich habe folgendes Problem:
ich bekomme aus einem Kassen-Auswertungssystem eine PDF generiert und in "Ordner X" abgelegt. Ich will diese PDF mit einem Datum und Uhrzeit versehen (umbenennen) und in einen anderen Ordner verschieben lassen. Dieser Prozess sollte im Hintergrund laufen. Hier mein Ansatz:
datum=date()
'strOldFile = Environ$("WINDIR") & "\setuplog.txt"
'strNewFile = Environ$("WINDIR") & "\newsetuplog.txt"
strOldFile = "D:\PDF_in\1.pdf"
strNewFile = "D:\PDF_in\1_" & datum & ".pdf"
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.MoveFile strOldFile, strNewFile
Set objFSO = Nothing
FOLDER_PDF = "D:\PDF_in"
FOLDER_MOVE = "D:\PDF_out"
Set fso = WScript.CreateObject("Scripting.Filesystemobject")
strPDFs = ""
For Each file In fso.GetFolder(FOLDER_PDF).Files
If LCase(fso.GetExtensionName(file.Path)) = "pdf" Then
If strPDFs <> "" Then
strPDFs = strPDFs & ",""" & file.Path & """"
Else
strPDFs = """" & file.Path & """"
End If
End If
Next
If strPDFs <> "" Then
For Each pdf In Split(strPDFs,",",-1,1)
pdf = Replace(pdf,"""","",1,-1,1)
fso.MoveFile pdf , FOLDER_MOVE & "\"
Next
End If
Nachteil bei meiner Version:
wenn keine Datei im Ordner Script startet nicht ( soll ja dauerhaft laufen)
dateien müssen 1 heißen ( soll alle PDF´s mit datum und Uhrzeit versehen)
Danke schonmal im vorraus.
LG
Andy
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 232810
Url: https://administrator.de/contentid/232810
Ausgedruckt am: 22.11.2024 um 17:11 Uhr
8 Kommentare
Neuester Kommentar
Hallo Andy, Willkommen im Forum!
Dazu gabe es hier schon mehrfach Lösungen, hier eine passende bei der du nur noch das umbenennen durch ein Move ersetzen musst:
Grüße Uwe
Dazu gabe es hier schon mehrfach Lösungen, hier eine passende bei der du nur noch das umbenennen durch ein Move ersetzen musst:
- Ordner überwachen: Suche eine Batch,Tool oder Programm zum umbenennen von Dateien
'Pfad der zu überwachen ist
Const strPath = "C:\pdf_in"
'Pfad in dem die umbenannten Dateien landen
Const strPathOut = "C:\pdf_out"
'Überwachungs-Interval in Sekunden
Const intInterval = "2"
'------------------------------
strDrive = Split(strPath,"\")(0)
strFolder = Replace(Split(strPath,":")(1),"\","\\") & "\\"
Set fso = WScript.CreateObject("Scripting.Filesystemobject")
Set objShell = CreateObject("Wscript.Shell")
Set objWMIService = GetObject( "winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2" )
strQuery = "Select * From __InstanceOperationEvent" _
& " Within " & intInterval _
& " Where Targetinstance Isa 'CIM_DataFile'" _
& " And TargetInstance.Drive='" & strDrive & "'"_
& " And TargetInstance.Path='" & strFolder & "'"
Set colEvents = objWMIService.ExecNotificationQuery (strQuery)
Do
Set objEvent = colEvents.NextEvent()
Set objTargetInst = objEvent.TargetInstance
Select Case objEvent.Path_.Class
Case "__InstanceCreationEvent"
filename = objTargetInst.Name
If fso.GetExtensionName(filename) = "pdf" Then
t = Timer()
milliseconds = Int((t-Int(t))*1000)
datum = Replace(Replace(Now(),":",".")," ","_") & "." & milliseconds
newFileName = fso.GetBaseName(filename) & "_" & datum & ".pdf"
fso.MoveFile filename, strPathOut & "\" & newFileName
End If
End Select
Loop
naja das habe ich hier schon x mal mit Leuten durchgemacht, dann hast du noch einen Fehler in deinem Script, hast du mein obiges genommen, das geht einwandfrei ? Pfade sind hoffentlich ohne Backslash am Ende.
Hinweis: Mit Netzlaufwerken geht dies nicht ! nur mit lokalen Laufwerken.
Bei Änderungen am Script muss dieses natürlich auch erst im Taskmanager abgeschossen werden...
Hinweis: Mit Netzlaufwerken geht dies nicht ! nur mit lokalen Laufwerken.
Bei Änderungen am Script muss dieses natürlich auch erst im Taskmanager abgeschossen werden...
Zitat von @schinken87:
wie bekomm ich an das datum noch die uhrzeit mit angehängt weil der dateiname immer "1.pdf" ist und ich vermeiden
will das der script stoppt weil dateien schon vorhanden sind
kann es sein das mehrere deiner 1er Dateien in kurzem Zeitraum im Ordner landen, dann wäre eventuell auch der Sekundenabstand nicht ausreichend, so das man einen Random-String oder die Millisekunden hinten dran hängt, oder ist immer genug Zeitabstand dazwischen ?wie bekomm ich an das datum noch die uhrzeit mit angehängt weil der dateiname immer "1.pdf" ist und ich vermeiden
will das der script stoppt weil dateien schon vorhanden sind
Ist oben mit Uhrzeit angepasst.... die Zeit wird dann so angehängt: 17.03.2014_16.08.26.441 (mit ms am Ende)