Windows Script Host (vbs-Skript) verarbeitet den variablen Pfad nicht korrekt
Hallo,
etwas sehr seltsamen:
Folgendes vbs-Script wird auf einem Rechner mit ausgeschalteter Kontensteuerung korrekt ausgeführt, aber auf einem anderen - allerdings mit eingeschalteter Kontensteuerung mit administrativen Rechten - nicht korrekt ausgeführt (beides unter Windows 7).
Beim Ausführen wird jeweils diese Fehlermeldung generiert:
Hier ist es klar zu sehen, dass Windows Script Host bei der Verarbeitung des Skriptes vor der Variable %UserProfile% seltsamerweise den Pfad des Verzeichnisses einfügt, von welchem aus diese vbs-Skriptdatei ausgeführt wird.
Wird das Skript von einem Verzeichnis etwa wie D:\Dokumente\VBS-Skript ausgeführt, dann würde der intern tatsächlich verarbeitete Pfad in der Fehlermeldung so aussehen:
D:\Dokumente\VBS-Skript\%UserProfile%\Desktop
Wird der variable Pfad %UserProfile%\Desktop in dem Windows Explorer 1:1 manuell eingetippt, dann gelangt es problemlos zu dem Verzeichnis.
Wird der direkte Pfad zu dem Verzeichnis – also ohne Variable - in dem Skript wie folgt eingetragen
C:\Users\Administrator\Desktop\VHD.lnk
funktioniert das Skript dann und eine Verknüpfung wird dort erstellt.
Ich hatte zuerst die Vermutung, dass die entsprechenden Variablen in dem System ungewollt verändert wurden, das kann andererseits mit dem genannten Beispiel oben doch nicht der Fall sein!?
Diese Krankheit ist mir ein großes Rätsel.
So wie ich es stark spüre, habt Ihr bestimmt eine Erklärung und eine Lösung hierfür.
PS: Auf dem Rechner mit der aktiven Kontensteuerung sind nur ein Office 2007 Paket und vier andere Programme drauf, die ich beruflich monatelang benutze. Windows ist inkl. allen Updates auf dem neuesten Stand.
Danke sehr!
Gruß
evinben
etwas sehr seltsamen:
Folgendes vbs-Script wird auf einem Rechner mit ausgeschalteter Kontensteuerung korrekt ausgeführt, aber auf einem anderen - allerdings mit eingeschalteter Kontensteuerung mit administrativen Rechten - nicht korrekt ausgeführt (beides unter Windows 7).
Set objShell=WScript.CreateObject("Wscript.Shell")
Set objShortcut=objShell.CreateShortcut("%UserProfile%\Desktop\VHD.lnk")
objShortcut.TargetPath="G:\"
objShortcut.Description="Alt"
objShortcut.Save
Hier ist es klar zu sehen, dass Windows Script Host bei der Verarbeitung des Skriptes vor der Variable %UserProfile% seltsamerweise den Pfad des Verzeichnisses einfügt, von welchem aus diese vbs-Skriptdatei ausgeführt wird.
Wird das Skript von einem Verzeichnis etwa wie D:\Dokumente\VBS-Skript ausgeführt, dann würde der intern tatsächlich verarbeitete Pfad in der Fehlermeldung so aussehen:
D:\Dokumente\VBS-Skript\%UserProfile%\Desktop
Wird der variable Pfad %UserProfile%\Desktop in dem Windows Explorer 1:1 manuell eingetippt, dann gelangt es problemlos zu dem Verzeichnis.
Wird der direkte Pfad zu dem Verzeichnis – also ohne Variable - in dem Skript wie folgt eingetragen
C:\Users\Administrator\Desktop\VHD.lnk
funktioniert das Skript dann und eine Verknüpfung wird dort erstellt.
Ich hatte zuerst die Vermutung, dass die entsprechenden Variablen in dem System ungewollt verändert wurden, das kann andererseits mit dem genannten Beispiel oben doch nicht der Fall sein!?
Diese Krankheit ist mir ein großes Rätsel.
So wie ich es stark spüre, habt Ihr bestimmt eine Erklärung und eine Lösung hierfür.
PS: Auf dem Rechner mit der aktiven Kontensteuerung sind nur ein Office 2007 Paket und vier andere Programme drauf, die ich beruflich monatelang benutze. Windows ist inkl. allen Updates auf dem neuesten Stand.
Danke sehr!
Gruß
evinben
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 181668
Url: https://administrator.de/forum/windows-script-host-vbs-skript-verarbeitet-den-variablen-pfad-nicht-korrekt-181668.html
Ausgedruckt am: 03.04.2025 um 17:04 Uhr
23 Kommentare
Neuester Kommentar
Hallo evinben!
Sorry - ich verstehe Deine Frage nicht ...
Welche "
Grüße
bastla
Sorry - ich verstehe Deine Frage nicht ...
Welche "
SpecialFolders
" verfügbar sind, kannst Du jedenfalls hier nachlesen ...Grüße
bastla
Hallo evinben!
Nur der Vollständigkeit halber: Natürlich lassen sich in allen Versionen (zusätzliche) Variablen verwenden - oder auch nicht:
Grüße
bastla
P.S.: Dein letztes Beispiel hat eine ungerade Anzahl von Anführunszeichen ...
Nur der Vollständigkeit halber: Natürlich lassen sich in allen Versionen (zusätzliche) Variablen verwenden - oder auch nicht:
Set objShortcut = objShell.CreateShortcut(objShell.ExpandEnvironmentStrings("%UserProfile%") & "\%LinkName%.lnk")
bastla
P.S.: Dein letztes Beispiel hat eine ungerade Anzahl von Anführunszeichen ...
[OT]
was übrigens auch auf die Anzahl der Buchstaben des Wortes "Anführungszeichen" selbst zutrifft - meistens.
Grüße
Biber
[/OT]
was übrigens auch auf die Anzahl der Buchstaben des Wortes "Anführungszeichen" selbst zutrifft - meistens.
Grüße
Biber
[/OT]
Hallo evinben!
Wenn's funktioniert, ist es richtig
...
... allerdings würde ich doch die beiden "Shells" unterschiedlichen Objekten (Variablennamen kannst Du ja - relativ - frei wählen) zuordnen - also zB:
- dann kannst Du bei Bedarf (und den hätte es oben bei
schon gegeben) beide "nebeneinander" verwenden ...
Ob Du schließlich den "Umweg" über "
Grüße
bastla
Wenn's funktioniert, ist es richtig
... allerdings würde ich doch die beiden "Shells" unterschiedlichen Objekten (Variablennamen kannst Du ja - relativ - frei wählen) zuordnen - also zB:
Set objWShell = WScript.CreateObject("WScript.Shell")
Set objShellApp = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(objShell.ExpandEnvironmentStrings("%Windir%") & "\system32")
Ob Du schließlich den "Umweg" über "
NameSpace
" tatsächlich benötigst, kann ich nicht abschätzen - "AllUsersPrograms" zumindest gibt es auch als einen der "SpecialFolders
" (siehe Link oben) ...Grüße
bastla
Hallo evinben!
Wenn Du tatsächlich Anführungszeichen (die mit dem "g"
) benötigst, kannst Du sie ja einfach (bzw eigentlich doppelt oder sogar vierfach
) hinzufügen:
- alternativ auch mit:
Grüße
bastla
Wenn Du tatsächlich Anführungszeichen (die mit dem "g"
set objArgs = WScript.Arguments
WScript.Echo """" & objArgs(0) & """"
set objArgs = WScript.Arguments
WScript.Echo Chr(34) & objArgs(0) & Chr(34)
bastla