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

+0

У меня нет ошибки, ничего не происходит - файл не копируется, потому что я предполагаю, что он не может найти файл user.js. – Romulus

+0

Имя файла copyFile.vbs – Romulus

ответ

3

Я рекомендую использовать FileSystemObject при работе с путями к файлам:

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

Edit: Проблема в этой строке вашего скрипта:

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

Поскольку FileToCopy содержит полное имя файла, когда вы сцепить его с ProfileFolder вы получите недопустимое имя файла, например:

C: \ Documents и Settings \ имя пользователя \ Application Data \ Mozilla \ Firefox \ Profiles \ mlreq6kv.default \ D: \ unproxy \ user.js

Измените эту строку ниже, и ваш скрипт должен работать нормально. (Примечание: тянущаяся Разделительный в конце ProfileFolder необходимо указать, что папка профиля, например mlreq6kv.default, действительно папка, а не файл.)

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

Это дает мне ошибку «неправильное имя файла или номер» ... – Romulus

1

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

Set WSHShell = WScript.CreateObject("WScript.Shell") 
WScript.Echo WshShell.CurrentDirectory 
Смежные вопросы