Показать полную графическую версию : [решено] Как подняться на 2 уровня вверх?
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, спасибо за помощь!
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC