Показать полную графическую версию : [решено] аналог %~dp0 из bat для vbs
NLOLegion
09-03-2016, 10:09
Как заменить %~dp0 в коде, чтобы скрипт работал из той папки, где был запущен, при условии, что батник в этой же папке?
Пробовал разное, искал на просторах сети, но что-то не выходит..
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run chr(34) & "%~dp0\1.bat" & Chr(34), 0
Set WshShell = Nothing
Как заменить %~dp0 в коде, чтобы скрипт работал из той папки, где был запущен, при условии, что батник в этой же папке? »
Вообще-то, «%~dp0» вовсе не:
из той папки, где был запущен »
а строго «из того каталога, где находится пакетный файл». Они могут совпадать, но это разные понятия.
Выглядеть сие может так:
Option Explicit
Dim objFSO
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
WScript.Echo objFSO.GetParentFolderName(WScript.ScriptFullName)
Set objFSO = Nothing
WScript.Quit 0
Petya V4sechkin
09-03-2016, 10:46
Или так:
WScript.Echo Left(WScript.ScriptFullName, Len(WScript.ScriptFullName) - Len(WScript.ScriptName))
NLOLegion
09-03-2016, 10:52
Iska, Petya V4sechkin, вроде как эти строчки я и нашел в сети, но где здесь запуск моего батника(1.bat)? Не получается совместить.
Petya V4sechkin
09-03-2016, 11:06
Set WshShell = CreateObject("WScript.Shell")
strPath = Left(WScript.ScriptFullName, Len(WScript.ScriptFullName) - Len(WScript.ScriptName))
WshShell.Run Chr(34) & strPath & "1.bat" & Chr(34), 0
NLOLegion
09-03-2016, 11:15
Petya V4sechkin, безмерно признателен!!!!
но где здесь запуск моего батника(1.bat) »
Ну, до кучи:
Option Explicit
Dim objFSO
Dim objWshShell
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objWshShell = WScript.CreateObject("WScript.Shell")
objWshShell.Run objWshShell.ExpandEnvironmentStrings("%comspec% /c """) & objFSO.BuildPath(objFSO.GetParentFolderName(WScript.ScriptFullName), "1.cmd") & """", 1, False
Set objWshShell = Nothing
Set objFSO = Nothing
WScript.Quit 0
NLOLegion
09-03-2016, 13:31
Iska, благодарю за решение! А ещё ты всегда на форуме и оперативен. Можешь ли ссылку кинуть что почитать по данному вопросу? (как вариант в личку). Не хочется быть кретином и халявщиком( а вопросы я могу задавать бесконечно)).
Можешь ли ссылку кинуть что почитать по данному вопросу? »
Полезные ресурсы по скриптовым языкам администрирования (http://forum.oszone.net/thread-130222.html)
Windows Script Host: Коллекция ссылок (http://forum.script-coding.com/viewtopic.php?id=10)
а вопросы я могу задавать бесконечно) »
Задавайте. Но помните: каждому отдельному тематическому вопросу — отдельную тему.
NLOLegion
04-01-2020, 12:55
Ну, до кучи: »
как к этому решению добавить
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run chr(34) & "C:\A\0\1.bat" & Chr(34), 0
Set WshShell = Nothing
?
ну конечно без надобности путь указывать - только название батника.
Чтобы и батник из каталога запустился, и дверь не скрипнула (окно консоли не появилось).
Готовое решение хорошо, но если возможно, показать какая строчка куда встанет и почему... если возможно
как к этому решению »
Там было решение задачи:
Как заменить %~dp0 в коде, чтобы скрипт работал из той папки, где был запущен, при условии, что батник в этой же папке? »
А здесь что?
И как понять:
WshShell.Run chr(34) & "C:\A\0\1.bat" & Chr(34), 0 »
и:
ну конечно без надобности путь указывать - только название батника. »
?!
NLOLegion
05-01-2020, 05:18
Iska, решение однозначно есть. Ваш код(пример ниже) работает!:
Option Explicit
Dim objFSO
Dim objWshShell
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objWshShell = WScript.CreateObject("WScript.Shell")
objWshShell.Run objWshShell.ExpandEnvironmentStrings("%comspec% /c """) & objFSO.BuildPath(objFSO.GetParentFolderName(WScript.ScriptFullName), "1.bat") & """", 1, False
Set objWshShell = Nothing
Set objFSO = Nothing
WScript.Quit 0
Дополнительный вопрос появился: как запускать батник(именно тот, что в этой же папке), чтобы окно консоли не появлялось?
Просто любой батник я запускаю кодом ниже указав до батника полный путь, а хочется скрестить оба скрипта, и понять как это делается(попытаться)
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run chr(34) & "C:\A\0\1.bat" & Chr(34), 0
Set WshShell = Nothing
как запускать батник(именно тот, что в этой же папке), чтобы окно консоли не появлялось? »
Указать вторым параметром 0 вместо 1:
objWshShell.Run objWshShell.ExpandEnvironmentStrings("%comspec% /c """) & objFSO.BuildPath(objFSO.GetParentFolderName(WScript.ScriptFullName), "1.bat") & """", 0, False
3.4. Run (https://www.script-coding.com/WSH/WshShell.html#3.4.)
VBScript - Run Method (Windows Script Host) (https://www.vbsedit.com/html/6f28899c-d653-4555-8a59-49640b0e32ea.asp) (смотреть значения intWindowStyle в разделе Remarks)
Запуск внешних приложений из скрипта VBScript, применение объекта WshShell - AskIt.RU (http://www.askit.ru/custom/progr_admin/m07/07_01_wshshell_apps.htm)
.Run - VBScript - SS64.com (https://ss64.com/vb/run.html)
и т.д.
NLOLegion
05-01-2020, 07:56
Iska, то что доктор прописал! Спасибо!
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.