10minutes
29-01-2015, 19:33
Здравствуйте!
Есть скрипт, который лежит тут:
C:\Users\user\Desktop\FOLDER01\ZOOM0001\1.vbs
Содержание скрипта:
set oShell = createobject("wscript.shell")
wscript.echo oShell.currentdirectory
Нужно, чтобы эхо выдавало:
C:\Users\user\Desktop
Оно выдает:
C:\Users\user\Desktop\FOLDER01\ZOOM0001
СurrentDirectory не менять. СurrentDirectory должен быть C:\Users\user\Desktop\FOLDER01\ZOOM0001
Если бы был CMD/BAT там есть команда на 1-ну вверх "cd ..", на 2-е вверх "cd ...". Тут это не работает....
Помогите.
С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. Если нужен каталог, в котором находится файл скрипта — тогда так, как я показал выше.
Тут это не работает.... »
Работает. Причём точно так же. Для путей внутри скрипта 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
10minutes
29-01-2015, 20:50
Теперь разобрался! Iska, спасибо за помощь!
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.