Einbettung einer Batchdatei in VBScript
Ich will am Ende der Ausführung eines VBScriptes eine Batch-Datei starten.
Moin moin zusammen,
eigentlich - so glaube ich - ist in der Einleitung bereits alles gesagt.
Ich will erreichen, dass ein VBScript, nach seiner Abarbeitung, eine Batch-Datei startet. Der Name der Batch-Datei ist "PDFCreator.bat".
Hat irgendwer eine Ahnung, wie ich das bewerkstelligen kann?
Verweise auf die Forumsinterne Suche sind zwecklos, denn diese habe ich bereits hinter mir.
Oder habe ich vielleicht nicht genügend gesucht?
Ich finde jedenfalls nur den umgekehrten Fall, welcher, aus meiner Sicht, nun gar kein Problem darstellt.
Für schnelle Hilfe wäre ich überaus dankbar!
Schonmal jetzt ein Dank an den Helfer und .... einen schönen Feierabend!
Thomas
eigentlich - so glaube ich - ist in der Einleitung bereits alles gesagt.
Ich will erreichen, dass ein VBScript, nach seiner Abarbeitung, eine Batch-Datei startet. Der Name der Batch-Datei ist "PDFCreator.bat".
Hat irgendwer eine Ahnung, wie ich das bewerkstelligen kann?
Verweise auf die Forumsinterne Suche sind zwecklos, denn diese habe ich bereits hinter mir.
Oder habe ich vielleicht nicht genügend gesucht?
Ich finde jedenfalls nur den umgekehrten Fall, welcher, aus meiner Sicht, nun gar kein Problem darstellt.
Für schnelle Hilfe wäre ich überaus dankbar!
Schonmal jetzt ein Dank an den Helfer und .... einen schönen Feierabend!
Thomas
7 Antworten
- LÖSUNG bastla schreibt am 31.08.2006 um 19:01:30 Uhr
- LÖSUNG Biber schreibt am 31.08.2006 um 19:09:38 Uhr
- LÖSUNG todo schreibt am 31.08.2006 um 21:13:42 Uhr
- LÖSUNG Biber schreibt am 31.08.2006 um 21:32:53 Uhr
- LÖSUNG todo schreibt am 01.09.2006 um 07:14:06 Uhr
- LÖSUNG Biber schreibt am 01.09.2006 um 07:22:41 Uhr
- LÖSUNG todo schreibt am 01.09.2006 um 09:32:07 Uhr
- LÖSUNG Biber schreibt am 01.09.2006 um 07:22:41 Uhr
- LÖSUNG todo schreibt am 01.09.2006 um 07:14:06 Uhr
- LÖSUNG Biber schreibt am 31.08.2006 um 21:32:53 Uhr
- LÖSUNG todo schreibt am 31.08.2006 um 21:13:42 Uhr
LÖSUNG 31.08.2006 um 19:01 Uhr
LÖSUNG 31.08.2006 um 19:09 Uhr
Moin, todo,
das geht z.B über die .Run-Methode des WScript-Shell-Objektes:
Gruß
Biber
[Edit] ...wieder zu langsam... [/Edit]
das geht z.B über die .Run-Methode des WScript-Shell-Objektes:
.... 'Deine 500 Zeilen *.vbs
Set WshShell = WScript.CreateObject("WScript.Shell")
Return = WshShell.Run("c:\todokrams\PDFCreator.bat", 0, True)
....' Returnwert nach Belieben verwerten oder verbrennen...
Biber
[Edit] ...wieder zu langsam... [/Edit]
LÖSUNG 31.08.2006 um 21:13 Uhr
LÖSUNG 01.09.2006 um 07:14 Uhr
@ Biber Nun ja, das Wecken war nicht notwendig, denn ich bin chronischer Frühaufsteher. 
Um auf das Script zu kommen ... So, wie es ausschaut, funktionieren beide Scriptvorschläge, genau so, wie ich es mir vorstelle. Ich bekomme es jedoch mit der Pfadangabe nicht hin, denn ich erhalte bei der Ausführung die Meldung, dass die Datei nicht im angegebenen Pfad zu finden ist. Die Datei ist jedoch dort!
Die Meldung zeigt an, dass der Fehler in der Zeile 63, welche die Zeile mit der Pfadangabe zur PDFCreator.bat ist, zu finden ist
Hintergrund:
Das Script soll als Anmeldescript laufen und befindet sich - genau wie die "PDFCreator.bat" - im Sysvol, in der Freigabe "Drucker$". Da wir zwei Domänencontroller (Windows Server 2003 R2) im Einsatz haben, macht es doch Sinn, wenn ich eine Varible, wie %logonserver%, einsetze. Da ich jedoch "noch" von VBScript nur sehr wenig Ahnung habe, weiß ich nun garnicht, wie ich die Pfadangabe korrekt setzen soll. Anders herum befinden sich die Scripte auf beiden DC's im gleichen Pfad, was eine Variable doch auch überflüssig macht!?
Hoffe, auch hierfür gibt es eine hilfreiche Antwort!
Gruß und einen schönen Tag
Thomas
Um auf das Script zu kommen ... So, wie es ausschaut, funktionieren beide Scriptvorschläge, genau so, wie ich es mir vorstelle. Ich bekomme es jedoch mit der Pfadangabe nicht hin, denn ich erhalte bei der Ausführung die Meldung, dass die Datei nicht im angegebenen Pfad zu finden ist. Die Datei ist jedoch dort!
Die Meldung zeigt an, dass der Fehler in der Zeile 63, welche die Zeile mit der Pfadangabe zur PDFCreator.bat ist, zu finden ist
Hintergrund:
Das Script soll als Anmeldescript laufen und befindet sich - genau wie die "PDFCreator.bat" - im Sysvol, in der Freigabe "Drucker$". Da wir zwei Domänencontroller (Windows Server 2003 R2) im Einsatz haben, macht es doch Sinn, wenn ich eine Varible, wie %logonserver%, einsetze. Da ich jedoch "noch" von VBScript nur sehr wenig Ahnung habe, weiß ich nun garnicht, wie ich die Pfadangabe korrekt setzen soll. Anders herum befinden sich die Scripte auf beiden DC's im gleichen Pfad, was eine Variable doch auch überflüssig macht!?
Hoffe, auch hierfür gibt es eine hilfreiche Antwort!
Gruß und einen schönen Tag
Thomas
LÖSUNG 01.09.2006 um 07:22 Uhr
Moin todo,
Grüße
Biber aka der Langschläfer
Nun ja, das Wecken war nicht notwendig, denn ich bin chronischer Frühaufsteher...
Ich dagegen stehe meist erst mittags auf.dass der Fehler in der Zeile 63, welche die Zeile mit der Pfadangabe zur PDFCreator.bat ist
Wie wäre es, die Zeilen 1 bis 77 mal zu posten?Hoffe, auch hierfür gibt es eine hilfreiche Antwort!
Dass mal eine Angela Merkel Bundeskanzlerin wird, hätte auch niemand für möglich gehalten - von daher bin ich da eher optimistisch.Grüße
Biber aka der Langschläfer
LÖSUNG 01.09.2006 um 09:32 Uhr
Ich habe die Lösung und es hat gar nicht weh getan!!! 
Mein Problem wird durch die ersten 9 und letzten 6 Zeilen vor "End Sub" (am Ende) gelöst.
Ich danke für die Hilfe und wünsche nun ein schönes Wochenende
Gruß
Thomas
'* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '*
'* Legt die Umgebungsvariable Logonserver fest!
'* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '*
DIM Logonserver
Set oShell = CreateObject("WScript.Shell")
Set oWshProcessEnv = oShell.Environment("process")
Logonserver = oWshProcessEnv("Logonserver")
'* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '*
'* Löscht den PDFCreator ... installierter Treiber bleibt erhalten!
'* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '*
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colInstalledPrinters = objWMIService.ExecQuery _
("Select * from Win32_Printer where DeviceID = 'PDFCreator'")
For Each objPrinter in colInstalledPrinters
objPrinter.Delete_
Next
'* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '*
'* Alle Verbundenen Netzwerkdrucker werden getrennt ... installierte Treiber bleiben erhalten!
'* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '*
strPrintSrv = "xxx.xxx.xxx.de" '*Name des Printservers
Set WshNetwork = Wscript.CreateObject("Wscript.Network")
strComputer = LCase(WshNetwork.ComputerName)
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\cimv2")
Set colPrinters = objWMIService.ExecQuery("Select * from Win32_Printer")
For Each objPrinter in colPrinters
If Left(objPrinter.Name, 2) = "\\" Then
WshNetwork.RemovePrinterConnection "\\" & strPrintSRV & "\" & _
objPrinter.ShareName, TRUE
End If
Next
'* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '*
'* Netzwerkdrucker aus gleicher OU (Raum xx) wird verbunden und als Standard definiert!
'* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '*
Set wshNetwork = WScript.CreateObject( "WScript.Network" )
Set objADSysInfo = CreateObject("ADSystemInfo")
Set objcomputer = GetObject("LDAP://" & objADSysInfo.computerName)
Set objOU = GetObject(objcomputer.parent)
Call SubmapprinterLPT
Sub SubmapprinterLPT()
objOU.Filter=Array("printqueue") '*Filtert alle Printer Queue Objekte aus der OU des Computers
For Each oPq In objOU
If UCase(oPq.PrinterName) = UCase(objcomputer.ou) Then
On Error Resume Next
'* Trennt bei Vorhandensein die Verbindung von LPT1:
wshNetwork.RemovePrinterConnection "LPT1", True, True
wshNetwork.AddPrinterConnection "LPT1", oPq.PrinterPath
wshNetwork.AddWindowsPrinterConnection oPq.PrinterPath
wshNetwork.SetDefaultPrinter oPq.Printerpath
Else
wshNetwork.AddWindowsPrinterConnection oPq.PrinterPath
End If
Next
'* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '*
'* PDFCreator wird wieder hergestellt ... Aufruf PDFCreator.bat
'* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '*
Set Sh = CreateObject("WScript.Shell")
'* WScript.Echo Logonserver & "\Drucker$\PDFCreator.bat"
Sh.Run Logonserver & "\Drucker$\PDFCreator.bat"
End Sub
'* Legt die Umgebungsvariable Logonserver fest!
'* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '*
DIM Logonserver
Set oShell = CreateObject("WScript.Shell")
Set oWshProcessEnv = oShell.Environment("process")
Logonserver = oWshProcessEnv("Logonserver")
'* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '*
'* Löscht den PDFCreator ... installierter Treiber bleibt erhalten!
'* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '*
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colInstalledPrinters = objWMIService.ExecQuery _
("Select * from Win32_Printer where DeviceID = 'PDFCreator'")
For Each objPrinter in colInstalledPrinters
objPrinter.Delete_
Next
'* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '*
'* Alle Verbundenen Netzwerkdrucker werden getrennt ... installierte Treiber bleiben erhalten!
'* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '*
strPrintSrv = "xxx.xxx.xxx.de" '*Name des Printservers
Set WshNetwork = Wscript.CreateObject("Wscript.Network")
strComputer = LCase(WshNetwork.ComputerName)
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\cimv2")
Set colPrinters = objWMIService.ExecQuery("Select * from Win32_Printer")
For Each objPrinter in colPrinters
If Left(objPrinter.Name, 2) = "\\" Then
WshNetwork.RemovePrinterConnection "\\" & strPrintSRV & "\" & _
objPrinter.ShareName, TRUE
End If
Next
'* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '*
'* Netzwerkdrucker aus gleicher OU (Raum xx) wird verbunden und als Standard definiert!
'* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '*
Set wshNetwork = WScript.CreateObject( "WScript.Network" )
Set objADSysInfo = CreateObject("ADSystemInfo")
Set objcomputer = GetObject("LDAP://" & objADSysInfo.computerName)
Set objOU = GetObject(objcomputer.parent)
Call SubmapprinterLPT
Sub SubmapprinterLPT()
objOU.Filter=Array("printqueue") '*Filtert alle Printer Queue Objekte aus der OU des Computers
For Each oPq In objOU
If UCase(oPq.PrinterName) = UCase(objcomputer.ou) Then
On Error Resume Next
'* Trennt bei Vorhandensein die Verbindung von LPT1:
wshNetwork.RemovePrinterConnection "LPT1", True, True
wshNetwork.AddPrinterConnection "LPT1", oPq.PrinterPath
wshNetwork.AddWindowsPrinterConnection oPq.PrinterPath
wshNetwork.SetDefaultPrinter oPq.Printerpath
Else
wshNetwork.AddWindowsPrinterConnection oPq.PrinterPath
End If
Next
'* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '*
'* PDFCreator wird wieder hergestellt ... Aufruf PDFCreator.bat
'* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '* '*
Set Sh = CreateObject("WScript.Shell")
'* WScript.Echo Logonserver & "\Drucker$\PDFCreator.bat"
Sh.Run Logonserver & "\Drucker$\PDFCreator.bat"
End Sub
Mein Problem wird durch die ersten 9 und letzten 6 Zeilen vor "End Sub" (am Ende) gelöst.
Ich danke für die Hilfe und wünsche nun ein schönes Wochenende
Gruß
Thomas