Показать полную графическую версию : [решено] Батник поиск->запуск
Всем доброго времени суток. Возникла задачка. Нужно написать батник, функция которого - поиск конкретной программы. Местонахождение по условиям задачи не известно. Через tasklist произвести поиск на предмет присутствия приложения в списке задач. Если программа запущена, то всё ок, ECHO "сообщение". Если программа не запущена, то выполнить её запуск. Так вот, сопсно, не могу сообразить, как это прописать. Помогите плз
Местонахождение по условиям задачи не известно. »странная постановка задачи - в интернете икать?.. имя известно?
имеется ввиду, неизвестно, на каком диске располагается программа и в каком каталоге. Слишком просто было бы, зная весь путь. Имя известно. В принципе, по скольку задача абстрактная, то это может быть любой исполнительный файл. Однако, как описано выше, батнику не нужно говорить прямой путь к файлу. Он его должен найти по критерию "имя файла"
параллельно вопрос возник. Почему программа запускается в фоновом режиме?
at xx:xx:xx "c:\program files\winamp\winamp.exe" /play "C:\Users\Public\Music\Sample Music\Maid with the Flaxen Hair.mp3"
at xx:xx:xx taskkill /f /im winamp.exe
Слишком просто было бы, зная весь путь. »пример поиска файла по всем дискам (включая сетевые):@Echo Off
Set EXE=Notepad.EXE
(WMIC Path CIM_DataFile Where "Extension='EXE' AND Name LIKE '%%\\%EXE%'" Get Name /Value
)|Find "="
Pause>Nul
Foreigner
27-05-2011, 17:26
Почему программа запускается в фоновом режиме? »
Потому что у программы at.exe есть параметр /interactive, который позволяет видеть окно приложения, запущенное в окружении SYSTEM.
at /?
amel27, у меня скрипт выдаёт ошибку (Window XP SP3). Можно ли сделать поисковик, чтобы в командной строке вбивать искомый файл, а в итоге получить пути, где он найден.
Foreigner
27-05-2011, 23:45
sov44,
Попробуйте так:
@echo off
setlocal
set /p file="File to find: "
call:search "%file%"
goto:eof
:search
set "name=%~n1"
set "ext=%~x1"
set "wmic=wmic datafile where (filename="%name%" AND extension="%ext:~1%") get name /value"
for /f "tokens=2 delims==" %%i in (' "%wmic%" ') do echo %%i
Не могу увидеть работу скрипта, выскакивает ошибка ( см. пост 7)
у меня скрипт выдаёт ошибку (Window XP SP3) »проблема не в скрипте, а в системе (конкретно - служба WMI), подробную инфу ищите в журналах событий
по вопросам оздоровления Windows - в другую ветку ;)
более менее адекватный скрипт Foreigner'а
@echo off
setlocal
set /p file="File to find: "
call:search "%file%"
goto:eof
:search
set "name=%~n1"
set "ext=%~x1"
set "wmic=wmic datafile where (filename="%name%" AND extension="%ext:~1%") get name /value"
for /f "tokens=2 delims==" %%i in (' "%wmic%" ') do echo %%i
Однако не могу запустить программу при условии её нахождения. Наверное я что-то не так делаю!?
if exist "%file%" start "%file%" else echo "%file%" missing
Foreigner
29-05-2011, 18:14
Забыли кавычки для заголовка:
if exist "%file%" start "" "%file%" ...
Забыли кавычки для заголовка:
Код:
if exist "%file%" start "" "%file%" ... »
какого заголовка? что-то я не совсем понял...
Foreigner
30-05-2011, 19:56
Harik,
Команда start интерпретирует первую пару кавычек, как заголовок будущего окна. Поэтому start "%file%" запустит еще один экземпляр cmd с заголовком %file% ( или значением этой переменной если она определена ), а не программу из этой переменной, как вы ожидали.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.