Нужно написать bat-файл, запускающий скрипты находящиеся в той же папке.
Нужно знать, в каком каталоге находится запущенный bat-файл. Ну, например, в этом же каталоге лежат другие скрипты, которые должны быть запущены текущим выполняющемся батником. Для того, чтобы он их запустил, ему было бы неплохо знать, где их искать, потому что вы могли запустить его находясь в совершенно произвольной директории. Или, к примеру, воспользоваться для запуска не самим файлом bat, а символической ссылкой, лежащей в другом каталоге, которая указывает на bat-файл.
Можно, конечно, поступить просто и в самом батнике жёстко прописать полный путь до каталога, в котором этот он лежит.
В bash-скрипте получится что-то вроде этого, но это не годится для Windows.
#!/bin/bash
DIRECTORY="/home/user/my_scripts"
cd $DIRECTORY
# запуск "соседних" скриптов
./script1.sh
./script2.sh
Вполне рабочий вариант и две обозначенные выше проблемы будут решены, но если надо будет переместить скрипт в другой каталог, то и значение переменной придётся руками поменять в самом скрипте. Не очень удобно.
Для красивого решения проблемы нужно знать всего три вещи:
1.Путь до выполняющегося скрипта можно узнать с помощью $0, но проблема в том, что он относительный, т.е. если вы запустите скрипт как ./script.sh, то и $0 будет содержать ./script.sh
2.Команда readlink с параметром -e решит сразу две проблемы: во-первых она вернет полный путь до файла скрипта, если вы воспользовались для запуска символической ссылкой (даже если это была цепочка симлинков), а во-вторых преобразует относительный путь, если такой получен с помощью $0, в абсолютный
3.Чтобы избавиться от имени файла скрипта в конце абсолютного пути, нужно воспользоваться командой dirname
Пример:
#!/bin/bash
# полное путь до скрипта
ABSOLUTE_FILENAME=`readlink -e "$0"`
# каталог в котором лежит скрипт
DIRECTORY=`dirname $ABSOLUTE_FILENAME`
# запуск "соседних" скриптов
$DIRECTORY/script1.sh
$DIRECTORY/script2.sh
Либо если есть варианты в VBS, жду предложений. Заранее спасибо.
CMD/BAT - [решено] Как узнать полный путь до запущенного bat-скрипта
-
Anton_moonray
Re: CMD/BAT - [решено] Как узнать полный путь до запущенного bat-скрипта
Про код "%~dp0" я знаю, хотелось бы поконкретнее на примере, т.к. в bat я еще не совсем разбираюсь. Задача такая: запуск файла 1.bat, который в свою очередь запустит два других скрипта (или просто откроет файлы) из той же папки. Думаю, уже понятно, что папка не будет находится в одном месте постоянно, а будет использована и на др. ПК. Долго мучаюсь, объясните "на пальцах", либо на VBS. Очень надо.
-
Petya V4sechkin
Re: CMD/BAT - [решено] Как узнать полный путь до запущенного bat-скрипта
Цитата Anton_moonray:
который в свою очередь запустит два других скрипта (или просто откроет файлы) из той же папки
Код:
который в свою очередь запустит два других скрипта (или просто откроет файлы) из той же папки
Код:
Код: Выделить всё
call "%~dp0другой_скрипт.cmd"
call "%~dp0еще_один_скрипт.cmd"-
Anton_moonray
Re: CMD/BAT - [решено] Как узнать полный путь до запущенного bat-скрипта
Спасибо! Не думал, что так коротко и просто.