2015-06-12 56 views
1

我想爲位於C:Drive中'用戶'文件夾中的文件路徑分配一個變量。這個文件路徑對於每個用戶都是不同的,但是我無法確切知道要使用哪個環境變量以及如何在VBScript中使用它。哪個環境變量用於文件路徑?

示例代碼:

Set wshShell = CreateObject("WScript.Shell") 
Set wshSystemEnv = wshShell.Environment("USER") 

'The folder where to save the file: 
strFolder = "C:\Users\" & wshSystemEnv & "\AppData\Roaming\Microsoft\AddIns" 

那麼,如何使用的文件路徑wshSystemEnv變量,而且,廣告是正確的變量?

,對於strFolder線彈出的錯誤是

數量的參數或無效的屬性賦值

+0

使用'wshSystemEnv = ...'而不是'Set wshSystemEnv = ...',指定一個字符串,而不是一個對象。 – omegastripes

+1

@omegastripes編號['Environment'](https://msdn.microsoft.com/en-us/library/fd7hxfdd%28v=vs.84%29.aspx)屬性返回['WshEnvironment'](https: //msdn.microsoft.com/en-us/library/6s7w15a0%28v=vs.84%29.aspx)對象。您可能正在考慮['ExpandEnvironmentStrings'](https://msdn.microsoft.com/en-us/library/dy8116cf%28v=vs.84%29.aspx)方法。 –

+0

哦,我的壞! @AnsgarWiechers你是對的! – omegastripes

回答

4

使用%APPDATA%環境變量:

Set wshShell = CreateObject("WScript.Shell") 
Set fso = CreateObject("Scripting.FileSystemObject") 

appData = wshShell.ExpandEnvironmentStrings("%APPDATA%") 

strFolder = fso.BuildPath(appData, "Microsoft\AddIns") 

始終使用BuildPath方法建立自己的路徑。


你從你的代碼得到的錯誤是因爲wshSystemEnv是一個對象,不能用這樣的字符串並置。


環境變量%APPDATA%傳統指向用戶的(漫遊)配置文件的應用程序數據文件夾。由於Windows Vista將Microsoft文件夾拆分爲three subfolders,其中只有一個仍然是漫遊配置文件的一部分(AppData\Roaming)。其他2個主要用於同步性能原因。

之所以%APPDATA%指向Roaming子文件夾,而不是%USERPROFILE%\AppData很有可能是有它指向父文件夾將需要大量的應用程序供應商,以釋放變更路徑的更新,由於層級的附加級別(%APPDATA%\application\foo%APPDATA%\Roaming\application\foo)。

+0

我很感激所有的幫助,您的解決方案工作。起初,我在最後一行代碼中添加了「Roaming \ Microsoft \ AddIns」,並且出現了文件路徑錯誤。你能解釋爲什麼&APPDATA&帶我比預期的更深一層? –

1

相應的環境變量是「username」的錯誤。

Set wshShell = CreateObject("WScript.Shell") 
wshSystemEnv = wshShell.ExpandEnvironmentStrings("%USERNAME%") 
strFolder = "C:\Users\" & wshSystemEnv & "\AppData\Roaming\Microsoft\AddIns" 

,或者您也可以使用:

wshSystemEnv = wshShell.Environment("PROCESS").Item("USERNAME") 

只是谷歌的VBScript環境變量,你會得到大量的實例和參考。

+0

您的代碼的錯誤框中顯示「Object required:'[string:」b012918「]'」,而b012918是我的用戶名 –

+0

是的 - 正如對您的問題的其他評論所述,您需要從第二個線。當你創建一個對象時,應該使用SET,但是如果你只是將一些東西分配給一個變量,那麼就不應該使用SET。通過將Set放置在該行上,就像您在問題中一樣,再現了您的「Object required」錯誤。 –

相關問題