Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Как узнать полный путь до запущенного bat-скрипта

Ответить
Настройки темы
CMD/BAT - [решено] Как узнать полный путь до запущенного bat-скрипта

Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Нужно написать 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, жду предложений. Заранее спасибо.

Отправлено: 16:09, 16-09-2012

 


Moderator


Сообщения: 53500
Благодарности: 15518

Профиль | Отправить PM | Цитировать


Цитата Anton_moonray:
полный путь до запущенного bat-скрипта
Код: Выделить весь код
Echo %~dp0
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:56, 16-09-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Про код "%~dp0" я знаю, хотелось бы поконкретнее на примере, т.к. в bat я еще не совсем разбираюсь. Задача такая: запуск файла 1.bat, который в свою очередь запустит два других скрипта (или просто откроет файлы) из той же папки. Думаю, уже понятно, что папка не будет находится в одном месте постоянно, а будет использована и на др. ПК. Долго мучаюсь, объясните "на пальцах", либо на VBS. Очень надо.

Отправлено: 18:05, 16-09-2012 | #3



Moderator


Сообщения: 53500
Благодарности: 15518

Профиль | Отправить PM | Цитировать


Цитата Anton_moonray:
который в свою очередь запустит два других скрипта (или просто откроет файлы) из той же папки
Код: Выделить весь код
call "%~dp0другой_скрипт.cmd"
call "%~dp0еще_один_скрипт.cmd"
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:15, 16-09-2012 | #4


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Спасибо! Не думал, что так коротко и просто.

Отправлено: 18:33, 16-09-2012 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Как узнать полный путь до запущенного bat-скрипта

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Помогите исправить ошибку скрипта php, которая раскрывает путь сервера torrent Вебмастеру 0 25-04-2012 13:10
Блог - В каких случаях при запуске программы не надо указывать полный путь к ней Vadikan Microsoft Windows 7 0 19-10-2011 10:30
[решено] Как найти файл и записать ПОЛНЫЙ путь к нему vivera864864 AutoIt 3 13-06-2011 19:04
Интерфейс - [решено] Выводится полный путь файлов и папок в панели задач Skiv444 Microsoft Windows 7 5 11-07-2010 15:54
Как узнать путь в реестре Rigiy Хочу все знать 4 18-01-2007 02:50




 
Переход