bat директория запуска скрипта
Bat директория запуска скрипта
Профиль | Отправить PM | Цитировать
Нужно написать bat-файл, запускающий скрипты находящиеся в той же папке.
Нужно знать, в каком каталоге находится запущенный bat-файл. Ну, например, в этом же каталоге лежат другие скрипты, которые должны быть запущены текущим выполняющемся батником. Для того, чтобы он их запустил, ему было бы неплохо знать, где их искать, потому что вы могли запустить его находясь в совершенно произвольной директории. Или, к примеру, воспользоваться для запуска не самим файлом bat, а символической ссылкой, лежащей в другом каталоге, которая указывает на bat-файл.
Можно, конечно, поступить просто и в самом батнике жёстко прописать полный путь до каталога, в котором этот он лежит.
В bash-скрипте получится что-то вроде этого, но это не годится для Windows.
#!/bin/bash
# запуск «соседних» скриптов
./script1.sh
./script2.sh
Вполне рабочий вариант и две обозначенные выше проблемы будут решены, но если надо будет переместить скрипт в другой каталог, то и значение переменной придётся руками поменять в самом скрипте. Не очень удобно.
Для красивого решения проблемы нужно знать всего три вещи:
# запуск «соседних» скриптов
$DIRECTORY/script1.sh
$DIRECTORY/script2.sh
Либо если есть варианты в VBS, жду предложений. Заранее спасибо.
Bat директория запуска скрипта
Профиль | Отправить PM | Цитировать
Нужно написать bat-файл, запускающий скрипты находящиеся в той же папке.
Нужно знать, в каком каталоге находится запущенный bat-файл. Ну, например, в этом же каталоге лежат другие скрипты, которые должны быть запущены текущим выполняющемся батником. Для того, чтобы он их запустил, ему было бы неплохо знать, где их искать, потому что вы могли запустить его находясь в совершенно произвольной директории. Или, к примеру, воспользоваться для запуска не самим файлом bat, а символической ссылкой, лежащей в другом каталоге, которая указывает на bat-файл.
Можно, конечно, поступить просто и в самом батнике жёстко прописать полный путь до каталога, в котором этот он лежит.
В bash-скрипте получится что-то вроде этого, но это не годится для Windows.
#!/bin/bash
# запуск «соседних» скриптов
./script1.sh
./script2.sh
Вполне рабочий вариант и две обозначенные выше проблемы будут решены, но если надо будет переместить скрипт в другой каталог, то и значение переменной придётся руками поменять в самом скрипте. Не очень удобно.
Для красивого решения проблемы нужно знать всего три вещи:
# запуск «соседних» скриптов
$DIRECTORY/script1.sh
$DIRECTORY/script2.sh
Либо если есть варианты в VBS, жду предложений. Заранее спасибо.
Путь до размещения bat. Список локальных и глобальных переменных CMD BAT исполняемых файлов windows
Локальные переменные среды
Если системные переменные окружения доступны всегда по всей системе, то локальные работают только в рамках конкретной учётной записи пользователя. Их количество может быть значительным, а состав отличаться даже для разных пользователей одного и того же ПК. Однако, есть ряд переменных, которые обычно присутствуют везде.
Бывает так, что написанный Вами BAT-файл работает на одном компьютере, но не работает на другом. Ошибка часто заключается в том, что были использованы прямые пути к файлам. Например батник для копирования всех текстовых файлов находящихся в папке windows на диске C
Такой батник будет работать на любом компьютере, только если операционная система установлена на диск С, если ОС расположена на другом диске D,F,K,J и т.д., необходимо использовать переменную %WINDIR%
Такой батник будет работать на любом компьютере — без разницы на какой диск установлена ОС
Переменные среды — текстовые переменные операционной системы, хранящие данные о ряде настроек системы. Используются переменные среды при копировании, перемещении, переименовании, удалении, создании файлов и папок других действий в командной строке.
Список переменных среды ОС Windows Вы можете посмотреть введя в командной строке: set и нажав клавишу Enter Также можно вывести список переменных в текстовый файл с помощью батника
Bat-файл с таким кодом создаст текстовый файл docent.txt(здесь и далее имена подставляйте свои)и выведет список переменных среды ОС Windows в этот текстовый документ в том-же месте где и располагается запущенный батник.
Список переменных сред
%ALLUSERSPROFILE% размещение профиля «All Users»
%APPDATA% используемое по умолчанию размещение данных приложений
%CD% путь к текущей папке
%CMDCMDLINE% строка команд, с помощью которой был запущен данный экземпляр Cmd.exe
%CMDEXTVERSION% номер версии текущих расширений обработчика команд
%COMPUTERNAME% имя компьютера
%COMSPEC% путь к исполняемой командной оболочке
%DATE% текущие данные, использует тот же формат, что и команда date /t
%ERRORLEVEL% код ошибки последней использовавшейся команды
%HOMEDRIVE% имя диска локальной рабочей станции
%HOMEPATH% полный путь к основному каталогу пользователя
%HOMESHARE% сетевой путь к общему основному каталогу пользователя
%LOGONSEVER% имя контроллера домена, который проверял подлинность текущей сессии
%NUMBER_OF_PROCESSORS% количество процессоров, установленных на компьютере
%OS% имя операционной системы
%PATHEXT% список расширений файлов
%PROCESSOR_ARCHITECTURE% архитектура процессора. Значения: x86, IA64
%PROCESSOR_IDENTFIER% описание процессора
%PROCESSOR_LEVEL% номер модели процессора, установленного на компьютере
%PROCESSOR_REVISION% номер модификации процессора
%ProgramFiles% путь к Program Files
%PROMPT% параметры командной строки для текущего интерпретатора
%RANDOM% произвольное десятичное число от 0 до 32767
%SYSTEMDRIVE% имя диска, содержащего корневой каталог
%SYSTEMROOT% размещение системного каталога Windows
%TIME% текущее время
%USERDOMAIN% имя домена, содержащего список учетных записей пользователей
%USERNAME% имя пользователя, выполнившего вход в систему
%USERPROFILE% размещение профиля для текущего пользователя
%WINDIR% размещение каталога операционной системы
Если Вы хотите посмотреть чему равна переменная среды на Вашем компьютере в командной строке(окно CMD), не забывайте прописывать впереди переменной «echo»
echo — команда предназначенная для отображения строки текста
Например если Вы захотите узнать текущее время %TIME% и просто напишите %TIME% в CMD — то получите ошибку: «Синтаксическая ошибка в имени файла, имени папки или метке тома»
Если напишете echo %TIME% — то узнаете точное время
Батником вывести информацию в txt можно так
echo сегодня %DATE% время %TIME% >> docent.txt
echo имя компьютера %COMPUTERNAME% >> docent.txt
echo имя юзера %USERNAME% >> docent.txt
echo где Винда %WINDIR% >> docent.txt
echo и т.д. и т.п >> docent.txt
Использование переменной при удалении файлов и папок с помощью Bat файла
Удаление папки Docent которая находится на диске С в WINDOWS
RD С:\WINDOWS\Docent /S/Q
То-же самое, но удаляем папку с помощью переменной %WINDIR%
RD %WINDIR%\Docent /S/Q
Использование переменной при перемещении файлов
Перемещение текстового файла docent.txt из папки WINDOWS на диске С в папку Program Files которая тоже на диске С
MOVE «C:\WINDOWS\docent.txt» «C:\Program Files»
То-же самое, но перемещаем с помощью переменных %WINDIR% и %ProgramFiles%
Прописать папку, из которой запущен скрипт, в path
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Автоматически прописать путь к папке в переменную Path
Задача: при запуске батник (из условной папки RKwin) должен прописать путь к папке win2.
Как прописать путь к PATH? Ошибка Error spawning cl.exe
Для сдачи лаб в универе, нужно в ретро среде разработки код скомпилировать, получается вот что.
Как создать папку там, где запущен bat?
Как создать папку там, где запущен bat? Eсли в банте просто написать «md bla-bla-bla» почему-то это.
Решение
Без проверок нельзя. Недавно показывал.
Я запускаю его с админскими правами (что бы assoc сработал), и path не работает
Добавлено через 1 минуту
bidstrup, как можно использовать ваше решение в контексте моей задачи?
непосредственно из командной строки оболочки powershell.
Но если у тебя perl-скрипт, он всё умеет делать сам.
Добавлено через 24 минуты
myapp.bat
Но это не работает. echo %p% действительно выводит путь в кавычках, но дальше показывается это: Непредвиденное появление: Files»;=!»==»!path!». (я запускал скрипт из C:\Program Files). Подозреваю, что где-то что-то нужно заэкранировать или закавычить, но я тут ничего не понимаю
Если кто-то хочет знать, зачем это нужно: всё было прекрасно. Но один юзер захотел поместить мою программу в Program Files (весьма законное желание, надо заметить ), соответственно, и этот скрипт для конфигурирования запускал оттуда. В результате ничего не работает из-за пробела в пути. Я надеюсь, что после закавычивания пути в path, оно таки заработает.
Все о реестре Regedit / All about registry
Текущая папка запуска в cmd. / The current start-up folder in cmd.
При создании скрипта cmd иногда возникает необходимость запустить тот или иной файл для установки приложения в папке со скриптом.
Для запуска приложения в текущей папке скриптом cmd используется переменная:
На изображении показан пример запуска скрипта cmd из другой папки. Сам скрипт состоит из двух строк, а именно:
dp 0
pause
Таким образом, запустив скрипт из любого расположения он будет ссылаться на путь где скрипт непосредственно и находится.
Пример скрипта инсталляции программы Winrar из папки где находится сам скрипт:
dp0 работает только в cmd файле, а не в командной строке.
dp 0 может использоваться как при инсталляции приложений, так и для копирования файлов в ваших bat файлах.
Надеюсь, что данная информация поможет Вам при составлении своих скриптов. Буду рад, если Вы сделаете репост данной статьи в социальные сети.
When you create a cmd script, sometimes you need to run a particular file to install the application in the folder with the script.
To run the application in the current folder, the cmd script uses a variable:
The image shows an example of running cmd script from another folder. The script itself consists of two lines, namely:
dp 0
pause
Running the script from any location will refer to the path where the script is located.
Example script installation Winrar from the folder where the script itself:
Attention! The %
dp0 variable only works in the cmd file, not on the command line.
The variable %
dp0 can be used both for installing applications and for copying files.
I hope this information will help you in the preparation of their scripts. We will be glad if you repost this article in social networks.