Батник поиск->запуск
Всем доброго времени суток. Возникла задачка. Нужно написать батник, функция которого - поиск конкретной программы. Местонахождение по условиям задачи не известно. Через tasklist произвести поиск на предмет присутствия приложения в списке задач. Если программа запущена, то всё ок, ECHO "сообщение". Если программа не запущена, то выполнить её запуск. Так вот, сопсно, не могу сообразить, как это прописать. Помогите плз
|
Цитата:
Цитата Harik
Местонахождение по условиям задачи не известно. »
|
странная постановка задачи - в интернете икать?.. имя известно?
|
имеется ввиду, неизвестно, на каком диске располагается программа и в каком каталоге. Слишком просто было бы, зная весь путь. Имя известно. В принципе, по скольку задача абстрактная, то это может быть любой исполнительный файл. Однако, как описано выше, батнику не нужно говорить прямой путь к файлу. Он его должен найти по критерию "имя файла"
|
параллельно вопрос возник. Почему программа запускается в фоновом режиме?
Код:
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
|
Цитата:
Цитата Harik
Слишком просто было бы, зная весь путь. »
|
пример поиска файла по всем дискам (включая сетевые):
Код:
@Echo Off
Set EXE=Notepad.EXE
(WMIC Path CIM_DataFile Where "Extension='EXE' AND Name LIKE '%%\\%EXE%'" Get Name /Value
)|Find "="
Pause>Nul
|
Цитата:
Цитата Harik
Почему программа запускается в фоновом режиме? »
|
Потому что у программы at.exe есть параметр /interactive, который позволяет видеть окно приложения, запущенное в окружении SYSTEM.
|
amel27, у меня скрипт выдаёт ошибку (Window XP SP3). Можно ли сделать поисковик, чтобы в командной строке вбивать искомый файл, а в итоге получить пути, где он найден.
|
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)
|
Цитата:
Цитата sov44
у меня скрипт выдаёт ошибку (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
|
Забыли кавычки для заголовка:
Код:
if exist "%file%" start "" "%file%" ...
|
Цитата:
Цитата Foreigner
Забыли кавычки для заголовка:
Код:
if exist "%file%" start "" "%file%" ... »
|
какого заголовка? что-то я не совсем понял...
|
Harik,
Команда start интерпретирует первую пару кавычек, как заголовок будущего окна. Поэтому start "%file%" запустит еще один экземпляр cmd с заголовком %file% ( или значением этой переменной если она определена ), а не программу из этой переменной, как вы ожидали.
|
Время: 20:41.
© OSzone.net 2001-