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
.
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
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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 44298
Url: https://administrator.de/forum/path-systemvariable-eintrag-per-vb-skript-loeschen-bzw-mit-einem-neuen-eintrag-ersetzen-44298.html
Ausgedruckt am: 09.04.2025 um 11:04 Uhr
6 Kommentare
Neuester Kommentar
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
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
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
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