Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата 10minutes:
СurrentDirectory должен быть C:\Users\user\Desktop\FOLDER01\ZOOM0001 »
10minutes, текущий каталог для исполняющего скрипты процесса «wscript.exe»/«cscript.exe» необязательно будет совпадать с каталогом, в котором находится скрипт. На это категорически нельзя закладываться. Если уж действительно нужен каталог, в котором находится скрипт, то нужно действовать так:
Скрытый текст
Код: Выделить весь код
Option Explicit

Dim objFSO


Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

WScript.Echo objFSO.GetParentFolderName(WScript.ScriptFullName)

Set objFSO = Nothing

WScript.Quit 0

(вероятно, не сработает в случае исполнения скрипта непосредственно в памяти, например, посредством WshRemote). И никак не WshShell.CurrentDirectory.

Так что определитесь: если Вам действительно нужен текущий каталог — тогда, да, WshShell.CurrentDirectory. Если нужен каталог, в котором находится файл скрипта — тогда так, как я показал выше.

Цитата 10minutes:
Тут это не работает.... »
Работает. Причём точно так же. Для путей внутри скрипта WSH действуют всё те же самые правила относительных путей. Т.е., подняться на два уровня вверх от пути, по которому находится скрипт можно так (если, конечно, есть куда подыматься по дереву каталогов):
Код: Выделить весь код
WScript.Echo objFSO.BuildPath(objFSO.GetParentFolderName(WScript.ScriptFullName), "..\..")
Также дополнительно можно развернуть относительный путь в абсолютный:
Код: Выделить весь код
WScript.Echo objFSO.GetAbsolutePathName(objFSO.BuildPath(objFSO.GetParentFolderName(WScript.ScriptFullName), "..\.."))
Последний вариант является наиболее корректным в Вашем случае.

Ещё один вариант — ссылками:
Код: Выделить весь код
WScript.Echo objFSO.GetFile(WScript.ScriptFullName).ParentFolder.ParentFolder.ParentFolder.Path
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:46, 29-01-2015 | #2