Войти

Показать полную графическую версию : [решено] Как подняться на 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 ...". Тут это не работает....
Помогите.

Iska
29-01-2015, 20:46
С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