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
2 ответа
Я рекомендую использовать 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 Data\Mozilla\Firefox\Profiles\mlreq6kv.default\D:\unproxy\user.js
Измените эту строку на следующую, и ваш скрипт должен работать нормально. (Примечание: разделитель конечного пути в конце ProfileFolder
требуется, чтобы указать, что папка профиля, например mlreq6kv.default, действительно является папкой, а не файлом.)
oFSO.GetFile(FileToCopy).Copy ProfileFolder & "\", True
Вы можете получить текущий каталог с помощью:
Set WSHShell = WScript.CreateObject("WScript.Shell")
WScript.Echo WshShell.CurrentDirectory