jebediah
Goto Top

Path Systemvariable Eintrag per VB Skript löschen bzw. mit einem neuen Eintrag ersetzen

Hallo zusammen,


wir haben bei uns eine Anwendung laufen die auf eine Oracle Datenbank zugreift. Die Datenbank wurde nun migriert auf eine neuere Oracle Version. Jetzt ist es so das auf den Client s die mit dem Programm arbeiten der alte Path Systemvariableeintrag gelöscht werden muss bzw. mit dem neuen Pfad getauscht oder überschrieben werden muss.
Da ich für die Anwendung ein Silent Setup gemacht habe müsste ich das nun anpassen. Leider reichen meine Skill's in VBS nicht ganz aus face-smile.
Ich habe da ein Skript im I-Net gefunden aber komm leider nicht ganz klar damit:
Call removePathEntry("path","J:\\cd\oracle\ora81\bin;") <<<<<<<<<< das ist der Pfad der weg muss

Sub removePathEntry(argEnv,argEntry)

Dim shell,env,Path,arPathEntries,n,entry

wscript.echo "argEnv:",argEnv
wscript.echo "argEntry:",argEntry
set shell = CreateObject("wscript.shell")
Set env = shell.environment(argEnv)
path = env("path")
WScript.echo argEnv,"before:",Path
arPathEntries = Split(path,";")
for n = 0 to ubound(arPathEntries)
entry = arPathEntries(n)
if lcase(entry) = LCase(argEntry) then
arPathEntries(n) = "J:\\cd\oracle\ora81\bin;"
elseif trim(entry) <> "" Then
arPathEntries(n) = entry & ";"
Else
arPathEntries(n) = ""
end If
Next
path = join(arPathEntries,"")
wscript.echo argEnv," after:",path
env("path") = Path

end Sub

Leider bekomme ich in Zeile 12 einen Fehler und weiss aber nicht woran es liegt.

Hat jemand ne Ahnung wo der Fehler ist.


Vielen Dank an euch vorab

VG

Jebediah

Content-Key: 44298

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

Ausgedruckt am: 29.03.2024 um 05:03 Uhr

Mitglied: MCSE-Cheffe
MCSE-Cheffe 13.11.2006 um 11:31:40 Uhr
Goto Top
Hallo,

ich habe einiges geändert sollte jetzt gehen, teste es mal und gib kurz Bescheid.

Call removePathEntry("%Path%","J:\\cd\oracle\ora81\bin;")

Sub removePathEntry(argEnv,argEntry)

Dim shell,env,Path,arPathEntries,n,entry

WScript.echo "argEnv:",argEnv
WScript.echo "argEntry:", argEntry

Set shell = CreateObject("wscript.shell")
Set env = shell.environment("system")

Path = shell.ExpandEnvironmentStrings("%Path%")
WScript.echo argEnv,"before:",Path
arPathEntries = Split(Path,";")

For n = 0 To UBound(arPathEntries)
entry = arPathEntries(n)
If LCase(entry) = LCase(argEntry) Then
arPathEntries(n) = "J:\\cd\oracle\ora81\bin;"
ElseIf Trim(entry) <> "" Then
arPathEntries(n) = entry & ";"
Else
arPathEntries(n) = ""
End If
Next

Path = Join(arPathEntries,"")
WScript.echo argEnv," after:",Path
env("%Path%") = Path

End Sub


Gruß MCSE_Cheffe
Mitglied: Jebediah
Jebediah 13.11.2006 um 11:38:53 Uhr
Goto Top
Hy MCSE_Cheffe,


danke für deine Hilfe. Das Skript läuft jetzt durch aber danach ist der Eintrag immer noch da da:

argEnv: %Path%
argEntry: J:\\cd\oracle\ora81\bin;
%Path% before: C:\Program Files\SAPIEN\PrimalScript Professional;C:\WINDOWS\system32;C:\WINDOWS\System32\Wbem;C:\Program Files\Resource Kit\;C:\WINDOWS\DPDrv;C:\PROGRA~1\Griaule\GRFING~1.1FR\bin;C:\Program Files\InstallShield\AdminStudio\7.0\Common\;J:\\cd\oracle\ora81\bin;
%Path% after: C:\Program Files\SAPIEN\PrimalScript Professional;C:\WINDOWS\system32;C:\WINDOWS\System32\Wbem;C:\Program Files\Resource Kit\;C:\WINDOWS\DPDrv;C:\PROGRA~1\Griaule\GRFING~1.1FR\bin;C:\Program Files\InstallShield\AdminStudio\7.0\Common\;J:\\cd\oracle\ora81\bin;

oder habe ich vergessen ein Wert anzupassen wo der neue Pfad rein muss ?


VG

Jebediah
Mitglied: Jebediah
Jebediah 13.11.2006 um 11:43:47 Uhr
Goto Top
ach ja und noch was jetzt habe ich in den Variablen noch einen Wert stehen %path% aber eigentlich sollte das Skript den wert ja nur aus dem vorhanden path löschen

thx

Jebediah
Mitglied: MCSE-Cheffe
MCSE-Cheffe 13.11.2006 um 11:45:04 Uhr
Goto Top
Habe die Strichpunkte bei deinem String vergessen zu entfernen. Da der Vergleich ja ohne den Strichpunkt am Ende deines Strings gemacht wird.
Und er den Eintrag darum nicht finden kann.
Hier nochmal die neuen Version.

Call removePathEntry("%Path%","J:\\cd\oracle\ora81\bin")

Sub removePathEntry(argEnv,argEntry)

Dim shell,env,Path,arPathEntries,n,entry

WScript.echo "argEnv:",argEnv
WScript.echo "argEntry:", argEntry

Set shell = CreateObject("wscript.shell")
Set env = shell.environment("system")

Path = shell.ExpandEnvironmentStrings("%Path%")
WScript.echo argEnv,"before:",Path
arPathEntries = Split(Path,";")

For n = 0 To UBound(arPathEntries)
entry = arPathEntries(n)
If LCase(entry) = LCase(argEntry) Then
arPathEntries(n) = "J:\\cd\oracle\ora81\bin"
ElseIf Trim(entry) <> "" Then
arPathEntries(n) = entry & ";"
Else
arPathEntries(n) = ""
End If
Next

Path = Join(arPathEntries,"")
WScript.echo argEnv," after:",Path
env("%Path%") = Path

End Sub

Gruß MCSE_Cheffe
Mitglied: MCSE-Cheffe
MCSE-Cheffe 13.11.2006 um 11:50:46 Uhr
Goto Top
Wegen dem %Path% die vorletzte Zeile muss natürlich so aussehen:
env("Path") = Path
Ohne Prozent

Gruß MCSE_Cheffe
Mitglied: Jebediah
Jebediah 13.11.2006 um 11:53:34 Uhr
Goto Top
*perfekt* !!!!!!

nochmals Vielen Dank für Deine Hilfe echt Top !!!!

Du hast mir eineige Stunden arbeit erspart face-smile)


Viele Grüße

Jebediah