2010-10-19 148 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