VBScript текущий каталог + подкаталог? - PullRequest
2 голосов
/ 20 октября 2010

Я пытаюсь получить путь к файлу, который находится в подкаталоге текущего каталога в 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 ]

3 голосов
/ 20 октября 2010

Я рекомендую использовать 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
1 голос
/ 20 октября 2010

Вы можете получить текущий каталог с помощью:

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