2015-03-12 5 views
1

Я пытаюсь создать макрос vbscript, который будет получать местоположение папки, в которой хранится макрос, и создавать выходные файлы в одну и ту же папку. Я использую следующий код, но его не получить правильное расположениеVBScript Macro getParentFolder Name

Set obj1FSO = CreateObject("Scripting.FileSystemObject") 
folderLoc = obj1FSO.GetParentFolderName("\Cubes_Macro_V5.zmc") 

Было бы затем использовать переменную folderLoc и добавьте имя выходного файла к нему для того, чтобы создать выходной файл в той же папке, где макрос хранится.

Set repFso = CreateObject("Scripting.FileSystemObject") 
Set repFile = repFso.CreateTextFile(folderLoc & "RCHT_OPTION4_REPORT.txt", True) 

макросъемки сохраняется в папке в D: \ диск, но когда я запускаю выше сегмент кода это получить место для рабочего стола.

+0

Возможный дубликат [Текущая директория VBScript + вспомогательная директория?] (Http://stackoverflow.com/questions/3972814/vbscript-current-directory-sub-directory) – Tomalak

ответ

0

https://msdn.microsoft.com/en-us/library/22dyy47c%28v=vs.84%29.aspx

Это не то, как работает метод - он извлекает «родителя» из строки, указанной.

Option Explicit 
    Dim fso,GetTheParent 

    Set fso = CreateObject("Scripting.FileSystemObject") 
    GetTheParent = fso.GetParentFolderName("C:\Windows") 
    wscript.echo "Attempt 1:" & "'" & GetTheParent & "'" 

    GetTheParent = fso.GetParentFolderName("\Windows") 
    wscript.echo "Attempt 2:" & "'" & GetTheParent & "'" 

    GetTheParent = fso.GetParentFolderName("Windows") 
    wscript.echo "Attempt 3:" & "'" & GetTheParent & "'" 

    GetTheParent = fso.GetParentFolderName("C:\WINDOWS\system32") 
    wscript.echo "Attempt 4:" & "'" & GetTheParent & "'" 

    GetTheParent = fso.GetParentFolderName("\WINDOWS\system32") 
    wscript.echo "Attempt 5:" & "'" & GetTheParent & "'" 

Результаты:

Attempt 1:'C:\' 
Attempt 2:'' 
Attempt 3:'' 
Attempt 4:'C:\WINDOWS' 
Attempt 5:'\WINDOWS' 
0

Существует разница между текущей директории ('где вы находитесь, когда вы начинаете процесс') и директории скрипта:

>> WScript.Echo 0, goFS.GetAbsolutePathName(".\") 
>> WScript.Echo 1, goWS.CurrentDirectory 
>> WScript.Echo 2, goFS.GetParentFolderName(WScript.ScriptFullName) 
>> 
0 C:\Documents and Settings\eh 
1 C:\Documents and Settings\eh 
2 M:\bin 

(I называется моей REPL/Интерактивной оболочкой VBS, которая находится в m: \ bin из моего домашнего каталога)

Я не знаю, если «Cubes_Macro_V5.zmc» is файл VBScript (со специальным расширением, которое загружается любым агентом, используемым через w | cscript.exe), но проверьте, имеет ли WScript.ScriptFullName ожидаемое содержимое и применяет .GetParentFolderName.

Если это не удается, вам необходимо определить папку, которую ваш агент использует для макросов, и передать этот каталог в .BuildPath.

На второй мысли:

Вуду, но легко проверить: Есть ли

WScript.Echo 0, goFS.GetAbsolutePathName(".\Cubes_Macro_V5.zmc") 

доставить желаемый результат?