VB Script Pfad als Parameter übergeben & Funktion aufrufen

  • VBScript

Es gibt 30 Antworten in diesem Thema. Der letzte Beitrag () ist von sabrina123451.

    Der Fehler wird zwar damit behoben, aber das Script funktioniert weiterhin nicht ordnungsgemäß

    Visual Basic-Quellcode

    1. 'Methode Subkey wird ausgelesen
    2. Const HKEY_LOCAL_MACHINE = &H80000002
    3. strComputer = "."
    4. Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
    5. strComputer & "\root\default:StdRegProv")
    6. strKeyPath = "SOFTWARE\Wow6432Node\InstallShield"
    7. objReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys
    8. VersionString = "IswiAuto" & Mid(Version,1,10) & ".ISWiProject"
    9. 'For Each Subkey in arrSubKeys
    10. 'Wscript.Echo Subkey
    11. 'Next
    12. Dim version
    13. Dim Subkey As String
    14. version = Mid(SubKey,1,2)
    15. Set Project = CreateObject("IswiAuto" & "VersionString" & ".ISWiProject")
    16. if Wscript.Arguments.count > 0 Then
    17. strFile = WScript.Arguments.Item(0)
    18. else
    19. WScript.Echo "Die Datei wurde nicht gefunden, bitte wählen Sie eine Datei aus!"
    20. end if


    Habe ich vielleicht noch mehr Fehler drin?
    Du verwendest in zeile 10 eine Variable welche erst in Zeile 18 einen Wert erhält.
    Dieser wiederrum wird leer sein, weil du einen Teil der Variable Subkey verwendest, welche wiederum auch keinen Wert enhält.

    Grundsätzlich brauchst du auch kein Mid sondern einfach nur eine Stringverkettung.
    Zudem verwendest du in Zeile 20 eine Variable mit "" Zeichen, wodurch nicht die Variable ausgegeben wird sondern nur "Versionstring" als Wort.

    Als erstes solltest du dir also die Version aus dem RegKey in eine Variable packen.
    Hast du dies geschafft, dann kannst du diese (Nennen wir sie Version) verwenden:

    Visual Basic-Quellcode

    1. Set Project = CreateObject("IswiAuto" & Version & ".ISWiProject")
    Das ist meine Signatur und sie wird wunderbar sein!
    Meintest du das so?

    Visual Basic-Quellcode

    1. 'Methode Subkey wird ausgelesen
    2. Const HKEY_LOCAL_MACHINE = &H80000002
    3. strComputer = "."
    4. Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
    5. strComputer & "\root\default:StdRegProv")
    6. strKeyPath = "SOFTWARE\Wow6432Node\InstallShield"
    7. objReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys
    8. 'For Each Subkey in arrSubKeys
    9. 'Wscript.Echo Subkey
    10. 'Next
    11. Dim version
    12. Dim arrSubKeys
    13. version = arrSubKeys
    14. Set Project = CreateObject("IswiAuto" & version & ".ISWiProject")
    15. if Wscript.Arguments.count > 0 Then
    16. strFile = WScript.Arguments.Item(0)
    17. else
    18. WScript.Echo "Die Datei wurde nicht gefunden, bitte wählen Sie eine Datei aus!"
    19. end if

    Hi habe es soweit hinbekommen dank Hilfe

    Visual Basic-Quellcode

    1. 'Funktion wird aufgerufen
    2. const HKEY_LOCAL_MACHINE = &H80000002
    3. dim out
    4. out = GetSubKeys(HKEY_LOCAL_MACHINE, "SOFTWARE\InstallShield\",32)
    5. For each sKey in out
    6. if Isnumeric(sKey) then
    7. Version = sKey
    8. exit for
    9. end if
    10. next
    11. Set Project = CreateObject("IswiAuto" & Version & ".ISWiProject")
    12. if Wscript.Arguments.count > 0 Then
    13. strFile = WScript.Arguments.Item(0)
    14. else
    15. WScript.Echo "Die Datei wurde nicht gefunden, bitte wählen Sie eine Datei aus!"
    16. end if
    17. Function GetSubKeys (RootKey, Key, RegType)
    18. Dim oCtx, oLocator, oReg, oInParams, oOutParams
    19. Set oCtx = CreateObject("WbemScripting.SWbemNamedValueSet")
    20. oCtx.Add "__ProviderArchitecture", RegType
    21. Set oLocator = CreateObject("Wbemscripting.SWbemLocator")
    22. Set oReg = oLocator.ConnectServer("", "root\default", "", "", , , , oCtx).Get("StdRegProv")
    23. Set oInParams = oReg.Methods_("EnumKey").InParameters
    24. oInParams.hDefKey = RootKey
    25. oInParams.sSubKeyName = Key
    26. Set oOutParams = oReg.ExecMethod_("EnumKey", oInParams, , oCtx)
    27. GetSubKeys = oOutParams.sNames
    28. End Function

    Und zwar zeigt er ja jetzt 20.0 beispielsweise an, er soll das ganze aber ohne .0 anzeigen daher auch
    die Fehlermeldung. Sprich ich muss den ausgelesenen Wert mit einem String hinten ab .0 abschneiden kann aber ja auch .1 oder .0001 oder ähnliches
    sein... wie mache ich dies am besten?

    Desweiteren soll er mir eine Fehlermeldung ausgeben wenn das IS nicht installiert ist und er deswegen keine Anwendung durchführen kann

    LG Sabrina
    Ab dem . soll alles grundsätzlich weg sein sodass es später so aussieht wenn ich es wieder zusammen setze IswiAuto20.ISWiProject

    Momentan ist es so: IswiAuto20.0.ISWiProject oder so zum beispiel IswiAuto19.0.ISWiProject
    aber es soll so aussehen IswiAuto20.ISWiProject oder so zum beispiel IswiAuto19.ISWiProject