dralcome
Goto Top

VBS kennt ExpandEnviromentStrings nicht - fehlt was?

Mein VBS-Script will nicht funktionieren weil der den Befehl nicht kennt (WinXP Professional)

Hallo Leute,

ich habe ein Script dass auf eine Datei unter "C:\Dokumente und Einstellungen\Benutzer\..." ändert.
Soweit so gut, alles funktioniert so lange ich den Pfad des Benutzernamens von Hand vorgebe, nur sind ja bekanntlich alle Benutzernamen verschieden.
Drum würde ich gerne die Umgebungsvariable %USERNAME% angeben, dazu bräuchte ich dann den Befehl
ExpandEnviromentStrings

Nur leider läuft das vor die Wand, der meint dann immer:
Das Objekt unterstützt diese Eigenschaft oder Methode nicht.: "WshShell.ExpandEnviromentStrings"

Kennt Windows diesen Befehl garnicht standardmäßig?

Content-ID: 149088

Url: https://administrator.de/forum/vbs-kennt-expandenviromentstrings-nicht-fehlt-was-149088.html

Ausgedruckt am: 22.12.2024 um 12:12 Uhr

Karo
Karo 16.08.2010 um 15:26:17 Uhr
Goto Top
Moin,

vielleicht weil es ExpandEnvironmentStrings heisst?

Karo
Biber
Biber 16.08.2010 um 16:36:32 Uhr
Goto Top
[OT]
Zitat von @Karo:
vielleicht weil es ExpandEnvironmentStrings heisst?
Andererseits...

.. nicht nur ein "n" zuwenig kann Probleme machen, auch ein "n" zuviel.
Mein seliger Onkel Heinz-Wilfried wollte mal bei einer Partnersuche eigentlich unter "Vorlieben" gerne "Aal" eintragen, weil er den wirklich gerne isst.
Ist auch schiefgegangen.
[/OT]
77559
77559 16.08.2010 um 17:27:39 Uhr
Goto Top
Darüberhinaus macht es Sinn den Ordner nicht fest über "C:\Dokumente und Einst.." anzusprechen, sondern ihn über WshShell.SpecialFolders aufzulösen. Da es einige neuere SpecialFolders gibt, die WshShell.SpecialFolders noch nicht kennt besteht die Alternative über Konstanten und Namespaces wie in folgendem Script gezeigt.
Nicht alle Bezeichner/Pfade sind sinnvoll oder direkt verwertbar aber auf jeden Fall besser als die direkte Kodierung User-/Betriebs-/System abhängiger Pfade.

' Teilweise Ausschnitte aus der script56.chm Hilfe-Datei  
' http://wsh-vbs.de/scr56de.chm/script56.chm  

Set WshShell = WScript.CreateObject("WScript.Shell")  
Set WshSysEnv = WshShell.Environment("PROCESS") ' SYSTEM, USER, PROCESS,  
WScript.Echo JL("Env-Username",32) & " : " & WshSysEnv("USERNAME")  
Wscript.Echo JL("Env-Username",32)     & " : " & WshShell.ExpandEnvironmentStrings("%username%")  

Set WshNetwork = WScript.CreateObject("WScript.Network")  
WScript.Echo JL("WSHNetwork Domäne",32)& " : " & WshNetwork.UserDomain  
WScript.Echo JL("WSHNetwork Computername",32) & " : " & WshNetwork.ComputerName  
WScript.Echo JL("WSHNetwork Benutzername",32) & " : " & WshNetwork.UserName  

' Windows Script Host SpecialFolders Property  
' http://msdn.microsoft.com/en-us/library/0ea7b5xe%28VS.85%29.aspx  
aSpcFolders = Array("AllUsersDesktop", "AllUsersStartMenu", "AllUsersPrograms", _  
                  "AllUsersStartup ", "Desktop", "Favorites", "Fonts", _  
                  "MyDocuments", "MyPictures", "NetHood", "PrintHood ", "Programs", _  
                  "Recent", "SendTo", "StartMenu", "Startup", "Templates")  

For Each SpcFld in aSpcFolders
  WScript.Echo JL("Specialfolder " & SpcFld,32) & " : " & WshShell.SpecialFolders(SpcFld)  
Next 

' Enumerating Special Folders  
' http://technet.microsoft.com/de-de/library/ee176604%28en-us%29.aspx  
aSpcFld = Array(&H1&, &H2&, &H3&, &H4&, &H5&, &H6&, &H7&, &H8&, &H9&, &Ha&, &Hb&, &Hd&, &He&, _
                &H10&, &H11&, &H12&, &H13&, &H14&, &H15&, &H16&, &H17&, &H18&, &H19&, &H1a&, _
                &H1b&, &H1c&, &H1f&, &H20&, &H21&, &H22&, &H23&, &H24&, &H25&, &H26&, &H27&, &H28&, _
                &H2b&, &H2e&, &H2f&, &H31&, &H35&,&H36&, &H37&, &H38&, &H39&, &H3b&, &H3d&)

Set objShell = CreateObject("Shell.Application")  
For Each SpecialFolder in aSpcFld
  Set objFolder = objShell.Namespace(SpecialFolder)
  Set objFolderItem = objFolder.Self 
  Wscript.Echo JL("&H" & Hex(SpecialFolder) & "&",6) & _  
               JL(objFolderItem.Name,28) & " : " & objFolderItem.Path   
Next

Function JL(Value,Places) ' Justify Left Value within Places ------------------  
  If Len (Value) < Places then
    JL = Left(Value & Space(Places),Places)
  Else
    JL=Value
   End If
end Function 

Gruß
LotPings
DrAlcome
DrAlcome 18.08.2010 um 08:45:46 Uhr
Goto Top
Leute... krass!!!
Ich könnte gerade mit der Birne auf die Tischkante klatschen!
Das "n" habe ich sowas von übersehen!!! Ich habe aber auch garnicht drauf geachtet, weil ich das Wort "Enviroment" ohne "n" kenne, und da dieses ja "Umwelt" bedeutet (im weitestens Sinne dann ja auch Umgebung), habe ich danach garnicht gesucht.

Danke für eure Hilfe und "Korrekturvorschläge"! face-wink

@77559: Danke für den Tipp, ich werde mal ausprobieren ob ich das so auch hinbekomme!

P.S.: Wie gut das ich keinen Aal mag!