Birgit25 10 Geschrieben 27. November 2007 Melden Teilen Geschrieben 27. November 2007 Hallo, ich habe mehrere VBS-Scripte die jeweils verschiedene Aufgaben haben und möchte diese in einem VBS-Script zusammen fassen. Ist so etwas machbar? Mfg. Birgit Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 28. November 2007 Melden Teilen Geschrieben 28. November 2007 Hallo Birgit, die verschiedenen Scripte kannst du z.B. zusammenpacken, indem du Sub's bzw. Function's draus machst. Beispiele: Sub ConnectPrinter(strDR) ... End Sub Function GetFullName(strDomain,strUserID) Set objUser = GetObject("WinNT://" & strDomain & "/" & strUserID) GetFullName=objUser.FullName End Function Ich machs z.B. so: Die Funktionen liegen in ner "Functions.inc", die Subs in einer "Procs.vbs" (die Namen sind egal) und werden dann in Scripten folgendermassen eingebunden: RunDir = WScript.ScriptFullName RunDir = Left(RunDir,InStr(RunDir,WScript.ScriptName)-2) Include Rundir & "\global.inc" Include Rundir & "\functions.inc" Include Rundir & "\procs.vbs" ... in der "global.inc" liegen bei mir globale Variablendefinitionen (Domänennamen, Servernamen o.ä....) Gruß, Frank Zitieren Link zu diesem Kommentar
pacobay 10 Geschrieben 30. November 2007 Melden Teilen Geschrieben 30. November 2007 @Cybquest Hallo Cybquest, entweder ich habe das irgendwie missverstanden oder aber ich bin zu ****! (Bei mirläuft XPP SP2 + WSH 5.7 für XP) Auf jeden Fall funktioniert das mit include bei mir nicht. :cry: Hätte ich aber gerne, denn zur Zeit nutze ich einen Aufruf eines wsf-jobs und von dort aus binde ich eine/oder mehrere andere VBS Datei(en) ein. So ist es mir zur Zeit zwar möglich Prozeduren aus einem Script in einem anderen Script zu verwenden. Aber dies ist aber natürlich etwas aufwendiger als einfach eine include-Zeile. Und wenn es doch einfacher geht, dann: "Haben wollen! Please" :cool: Daher bitte nochmal erklären: Habe bereits versucht Deine Beitrag wie folgt umzusetzten: unter c:\just4test liegen die beiden dateien C:\just4Test\testinclude.vbs C:\just4Test\helper.vbs In der helper.vbs habe ich eine einfache Funktion (justhelper) die ich in testinclude.vbs aufrufen möchte. Dies soll mir die include-Anweisung (ensprechend Deinem posting) doch ermöglichen. Oder???:confused: Verschiedene Testvarianten sind noch im code aber auskommentiert Folgende Fehlermeldungen: Entweder wird include als undefinierte variable definiert oder wenn ich include als variable deklariere (was ja eigentlich keinen Sinn macht) dann kommt ein Typenunverträglichkeitsfehler. Herzlichen Dank pacobay der jeweilige Code 'VB Script Document 'C:\just4Test\testinclude.vbs Option explicit DIM RunDir 'Dim Include RunDir = WScript.ScriptFullName RunDir = Left(RunDir,InStr(RunDir,WScript.ScriptName)-2) Include Rundir & "\Helper.vbs" 'Include= "C:\just4test\helper.vbs" 'msgbox Rundir justhelper Die helper.vbs ' VB Script Document 'C:\just4Test\helper.vbs Option explicit Dim wshShell Set wshShell = Wscript.CreateObject("Wscript.Shell") DIM msg ' Meldungstexte für Messages Dim titel ' Meldungstitel Function justhelper() msg= "Ich bin der helper" titel="just4test " WshShell.Popup msg,0, titel,(64+4096) End Function 'justhelper 'justhelper Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 30. November 2007 Melden Teilen Geschrieben 30. November 2007 Ups, sorry... hab ich vergessen. Im Code, in dem das Include verwendet wird, gibts bei mir gaaaanz unten noch ne passende Prozedur dazu: Sub Include( cNameScript ) Set oFS = CreateObject("Scripting.FileSystemObject") Set oFile = oFS.OpenTextFile( cNameScript ) ExecuteGlobal oFile.ReadAll() oFile.Close End Sub Zitieren Link zu diesem Kommentar
pacobay 10 Geschrieben 1. Dezember 2007 Melden Teilen Geschrieben 1. Dezember 2007 @Cybquest Ach soooo ! Aber jetzt funktioniert es im Prinzip. Lediglich die Ergänzung DIM oFS,oFile im Sub Include war noch nötig, da ich grundsätzlich mit "option explicit" arbeite. ;) Aber ganz klar ein dreifach: :jau: :jau: :jau: Hatte mal ewig mit dem Einbinden von externen scripten ein Problem. Habe dann zwar einen Weg gefunden mit dem ich leben konnte. Aber einfach die Basics via fso und executeglobal einzubinden bin ich nicht gekommen. :rolleyes: Kommt das von Dir oder woher hast Du das? Auf jeden Fall werde wohl zukünftig meine Basic-Prozeduren über deinen Weg einbinden. Ist wirklich einfacher. Genauer gesagt ich baue das bereits zu einem allgemeinen Template um. Denn ich habe so eine Art Mega.vbs auf die ich in einer Viezahl von kleineren Scripten zurückgreife. Diese liegt in einem zentralen Ort und nicht in dem selben Verzeichnis. Danke Dir auf jeden Fall herzlichst. :) pacobay @Birgit25 Sorry, für die Fachsimpelei. Aber Du bist nicht vergessen! Und daher poste ich das dann zusammenhängende und kommentierte Template natürlich hierher. Mache ich heute oder morgen fertig. Versprochen ;) Zitieren Link zu diesem Kommentar
pacobay 10 Geschrieben 1. Dezember 2007 Melden Teilen Geschrieben 1. Dezember 2007 Diese Zip repräsentiert eine Demonstrationsumgebung zum Thema: " VBS-Scripte zusammenfassen". '------------------------------------------------------------------- Die Zipdatei einfach unter c:\ extrahieren. Also c:\MYVBS\.... Dann laufen die Demonstrationsscripte einfach. Sonst halt entsprechende Anpassung in TestincludeV02.vbs durchführen. unter C:\MYVBS\0_info\ReadMe.txt ein paar allg. Infos Alternative V01 unter C:\MYVBS\Projekte\TestincludeV01\ Demonstration: Einbinden einer externen Scriptdatei (HelperV01.vbs) in eine andere Scriptdatei (TestincludeV01.vbs). Beide Dateien in einem Verzeichniss. Alternative V02 Demonstration: Einbinden externer Scriptdateien C:\MYVBS\myBSRep\GlobalDeclare.vbs C:\MYVBS\myBSRep\BasicProzedures.vbs in eine andere Scriptdatei C:\MYVBS\Projekte\TestincludeV02\TestincludeV02.vbs Also eingebundene Datei an einem fixen d.h. festgelegten Ort zur mehrfachen Verwendung in unterschiedlichen Scripten. _____ Noch Zusätzliche Infos am Ende der Datei C:\MYVBS\Projekte\TestincludeV01\TestincludeV01.vbs) have fun pacobay MYVBS.zip Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.