schinken87
Goto Top

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:

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

Content-ID: 232810

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

Ausgedruckt am: 22.11.2024 um 17:11 Uhr

colinardo
colinardo 17.03.2014 aktualisiert um 16:05:09 Uhr
Goto Top
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:
wie hier in diesem Beispiel (einmal gestartet läuft das Script im Hintergrund, und bei neu eintreffenden Dateien im Ordner werden diese mit Datum versehen in dem neuen Ordner abgelegt.)
'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
Grüße Uwe
schinken87
schinken87 17.03.2014 um 14:56:18 Uhr
Goto Top
Hallo Uwe,

bei mir bleiben die pdfs im Ordner und nichts geschieht.

script läuft im hintergrund.

was mache ich falsch.
colinardo
colinardo 17.03.2014 aktualisiert um 15:03:19 Uhr
Goto Top
erst Script starten und dann die PDFs in den Ordner reinwerfen !
schinken87
schinken87 17.03.2014 um 15:12:40 Uhr
Goto Top
habe ich gemacht pdf immernoch im ordner.
colinardo
colinardo 17.03.2014 aktualisiert um 15:18:31 Uhr
Goto Top
Zitat von @schinken87:

habe ich gemacht pdf immernoch im ordner.
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...
schinken87
schinken87 17.03.2014 um 15:47:09 Uhr
Goto Top
so sorry war mein fehler geht natürlich supi. mein ordner war in großbuchstaben und im script in kleinen ;)

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
colinardo
colinardo 17.03.2014 aktualisiert um 16:09:46 Uhr
Goto Top
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 ?
Ist oben mit Uhrzeit angepasst.... die Zeit wird dann so angehängt: 17.03.2014_16.08.26.441 (mit ms am Ende)
schinken87
schinken87 17.03.2014 um 16:19:17 Uhr
Goto Top
super danke pass soweit alles.