2010-10-19 143 views
2

我想獲取VBScript中當前目錄的子目錄內的文件的路徑。以下似乎不工作?VBScript當前目錄+子目錄?

currentDirectory = left(WScript.ScriptFullName,(Len(WScript.ScriptFullName))-(len(WScript.ScriptName))) 
FileToCopy = currentDirectory & "\test\user.js" 

這裏是整個代碼:

Set oFSO = CreateObject("Scripting.FileSystemObject") 
strFolder = oFSO.GetParentFolderName(WScript.ScriptFullName) 
FileToCopy = oFSO.BuildPath(strFolder, "unproxy\user.js") 

''# get AppdataPath 
Set WshShell = CreateObject("WScript.Shell") 
Set WshSysEnv = WshShell.Environment("PROCESS") 

AppdataPath = WshSysEnv("APPDATA") 

FoxProfilePath = AppdataPath & "\Mozilla\Firefox\Profiles\" 

'"# is firefox and user.js present? 
if oFSO.FolderExists(FoxProfilePath) AND oFSO.FileExists(FileToCopy) Then 

''# copy user.js in all profilefolders to get around those random profile names =) 
    For Each ProfileFolder In oFSO.GetFolder(FoxProfilePath).Subfolders 
     oFSO.GetFile(FileToCopy).Copy ProfileFolder & "\" & FileToCopy, True 
    Next 
End If 

'"# clean up 
Set oFSO = Nothing 
Set WshShell = Nothing 
Set WshSysEnv = Nothing 
+0

你可以詳細說明你的意思是「似乎沒有工作」?你得到一個錯誤或不正確的結果?什麼是您的VBScript腳本的文件名? – Helen 2010-10-19 21:28:12

+0

我沒有得到一個錯誤,似乎沒有發生 - 該文件不復制,因爲我猜測它無法找到user.js文件。 – Romulus 2010-10-19 21:44:01

+0

文件名是copyFile.vbs – Romulus 2010-10-19 21:44:16

回答

3

我建議使用FileSystemObject與文件路徑打交道時:

Set oFSO = CreateObject("Scripting.FileSystemObject") 
strFolder = oFSO.GetParentFolderName(WScript.ScriptFullName) 
FileToCopy = oFSO.BuildPath(strFolder, "test\user.js") 

編輯:的問題是在這條線你的腳本:

oFSO.GetFile(FileToCopy).Copy ProfileFolder & "\" & FileToCopy, True 

由於FileToCopy包含一個完整的文件名,當你與ProfileFolder串連它,你得到一個無效的文件名,如:

C:\的Documents and Settings \用戶名\ Application數據\ Mozilla的\ Firefox \ Profiles \ mlreq6kv.default \ D:\ unproxy \ user.js

將此行更改爲下面的行,並且您的腳本應該正常工作。 (注:在ProfileFolder末尾隨路徑分隔符是需要指出的配置文件夾,如mlreq6kv.default,確實是一個文件夾,而不是一個文件。)

oFSO.GetFile(FileToCopy).Copy ProfileFolder & "\", True 
+0

這是給我一個「錯誤的文件名或數字」錯誤... – Romulus 2010-10-19 21:42:05

1

您可以獲得當前目錄與:

Set WSHShell = WScript.CreateObject("WScript.Shell") 
WScript.Echo WshShell.CurrentDirectory