VBS PDF aufsteigend drucken
Hallo zusammen
Ich habe mir ein Script zusammengestellt welches mehrere PDF Dateien in einem Ordner ausdruckt. das ganze funktioniert soweit auch. Mein Problem ist nun das ich die Files in willkürlicher Reihenfolge gedruckt werden. Ich möchte diese jedoch aufsteigend drucken. Ich hoffe mir kann jemand weiterhelfen und sagen ob dies überhaupt möglich ist und wenn ja wie.
PS: Die Konvertierung der Files bzw. die Namen sind immer gleich aufgebaut: 100111_AB1_1933123_3653269_13.PDF
100111_AB1_1933321_3547789_13.PDF
100111_AB1_1945698_5698742_13.PDF
usw.
Ich möchte nun aufsteigend drucken bzw. sortiert nach dem 3 Segment xxxxxx_xxx_1966123_xxxxxxx_xx.PDF
Anbei das Script zum Drucken welches ich bereits erstellt habe:
Ich habe mir ein Script zusammengestellt welches mehrere PDF Dateien in einem Ordner ausdruckt. das ganze funktioniert soweit auch. Mein Problem ist nun das ich die Files in willkürlicher Reihenfolge gedruckt werden. Ich möchte diese jedoch aufsteigend drucken. Ich hoffe mir kann jemand weiterhelfen und sagen ob dies überhaupt möglich ist und wenn ja wie.
PS: Die Konvertierung der Files bzw. die Namen sind immer gleich aufgebaut: 100111_AB1_1933123_3653269_13.PDF
100111_AB1_1933321_3547789_13.PDF
100111_AB1_1945698_5698742_13.PDF
usw.
Ich möchte nun aufsteigend drucken bzw. sortiert nach dem 3 Segment xxxxxx_xxx_1966123_xxxxxxx_xx.PDF
Anbei das Script zum Drucken welches ich bereits erstellt habe:
sSourceFolder = "C:\Print\"
If WScript.Arguments.Count > 0 Then
sSourceFolder = WScript.Arguments(0)
End If
Set fso = CreateObject("Scripting.FileSystemObject")
If Not fso.FolderExists(sSourceFolder) Then
WScript.Echo "Ordner " & sSourceFolder & " nicht verfügbar!"
WScript.Quit(2)
Else
bPrintetd = False
Set oShellApp = WScript.CreateObject("Shell.Application")
For Each oFile In fso.GetFolder(sSourceFolder).Files
If InstrRev(oFile.Name, ".") Then
If LCase(Mid(oFile.Name, InstrRev(oFile.Name, "."))) = ".pdf" Then
oShellApp.ShellExecute oFile.Path, "", "", "print", 0
bPrinted = True
WScript.Sleep(5180)
End If
End If
Next
Set oShellApp = Nothing
If Not bPrinted Then
WScript.Echo "Kein Dokument zum Drucken gefunden!"
WScript.Quit(1)
End If
End If
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 191447
Url: https://administrator.de/forum/vbs-pdf-aufsteigend-drucken-191447.html
Ausgedruckt am: 23.12.2024 um 15:12 Uhr
1 Kommentar
Hallo staga!
Sortieren kannst Du in VBS nach verschiedenen Verfahren - hier ein Beispiel mit einem "Disconnected Recordset":
Zu überlegen wäre natürlich auch noch, die gedruckten Dateien zu verschieben, damit sie nicht mehrfach ausgedruckt werden ...
Grüße
bastla
Sortieren kannst Du in VBS nach verschiedenen Verfahren - hier ein Beispiel mit einem "Disconnected Recordset":
sSourceFolder = "C:\Print\"
If WScript.Arguments.Count > 0 Then
sSourceFolder = WScript.Arguments(0)
End If
Set fso = CreateObject("Scripting.FileSystemObject")
Const adVarChar = 200
Const MaxCharacters = 255
Const adFldIsNullable = 32
Set DataList = CreateObject("ADOR.Recordset") 'Datenbankobjekt erstellen
DataList.Fields.Append "Datei", adVarChar, MaxCharacters, adFldIsNullable 'Feld definieren
DataList.Open
If Not fso.FolderExists(sSourceFolder) Then
WScript.Echo "Ordner " & sSourceFolder & " nicht verfügbar!"
WScript.Quit(2)
Else
bPrintetd = False
Set oShellApp = WScript.CreateObject("Shell.Application")
For Each oFile In fso.GetFolder(sSourceFolder).Files
If LCase(fso.GetExtensionName(oFile.Name)) = "pdf" Then
DataList.AddNew 'neuen Datensatz erstellen
DataList("Datei") = oFile.Path 'dem Feld "Datei" den Pfad als Wert zuweisen
DataList.Update 'Datensatz eintragen
End If
Next
If Not DataList.EOF Then 'gibt es Daten?
DataList.Sort = "Datei" 'nach dem Feld "Datei" sortieren
DataList.MoveFirst 'beim ersten Datensatz beginnen ...
Do Until DataList.EOF '... und bis zum letzten durchgehen
oShellApp.ShellExecute DataList.Fields.Item("Datei"), "", "", "print", 0
WScript.Sleep(5180)
DataList.MoveNext 'nächsten Datensatz holen
Loop
Else
WScript.Echo "Kein Dokument zum Drucken gefunden!"
WScript.Quit(1)
End If
End If
Grüße
bastla