Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Батник поиск->запуск (http://forum.oszone.net/showthread.php?t=207611)

Harik 26-05-2011 12:24 1682931

Батник поиск->запуск
 
Всем доброго времени суток. Возникла задачка. Нужно написать батник, функция которого - поиск конкретной программы. Местонахождение по условиям задачи не известно. Через tasklist произвести поиск на предмет присутствия приложения в списке задач. Если программа запущена, то всё ок, ECHO "сообщение". Если программа не запущена, то выполнить её запуск. Так вот, сопсно, не могу сообразить, как это прописать. Помогите плз

amel27 26-05-2011 16:51 1683135

Цитата:

Цитата Harik
Местонахождение по условиям задачи не известно. »

странная постановка задачи - в интернете икать?.. имя известно?

Harik 26-05-2011 17:04 1683141

имеется ввиду, неизвестно, на каком диске располагается программа и в каком каталоге. Слишком просто было бы, зная весь путь. Имя известно. В принципе, по скольку задача абстрактная, то это может быть любой исполнительный файл. Однако, как описано выше, батнику не нужно говорить прямой путь к файлу. Он его должен найти по критерию "имя файла"

Harik 26-05-2011 23:17 1683331

параллельно вопрос возник. Почему программа запускается в фоновом режиме?
Код:

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


amel27 27-05-2011 12:47 1683618

Цитата:

Цитата Harik
Слишком просто было бы, зная весь путь. »

пример поиска файла по всем дискам (включая сетевые):
Код:

@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 1683779

Цитата:

Цитата Harik
Почему программа запускается в фоновом режиме? »

Потому что у программы at.exe есть параметр /interactive, который позволяет видеть окно приложения, запущенное в окружении SYSTEM.
Код:

at /?

sov44 27-05-2011 22:58 1683905

amel27, у меня скрипт выдаёт ошибку (Window XP SP3). Можно ли сделать поисковик, чтобы в командной строке вбивать искомый файл, а в итоге получить пути, где он найден.

Foreigner 27-05-2011 23:45 1683930

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


sov44 27-05-2011 23:57 1683938

Не могу увидеть работу скрипта, выскакивает ошибка ( см. пост 7)

amel27 28-05-2011 07:08 1684001

Цитата:

Цитата sov44
у меня скрипт выдаёт ошибку (Window XP SP3) »

проблема не в скрипте, а в системе (конкретно - служба WMI), подробную инфу ищите в журналах событий
по вопросам оздоровления Windows - в другую ветку ;)

Harik 29-05-2011 16:37 1684610

более менее адекватный скрипт 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 1684643

Забыли кавычки для заголовка:
Код:

if exist "%file%" start "" "%file%" ...

Harik 30-05-2011 19:02 1685247

Цитата:

Цитата Foreigner
Забыли кавычки для заголовка:
Код:
if exist "%file%" start "" "%file%" ... »

какого заголовка? что-то я не совсем понял...

Foreigner 30-05-2011 19:56 1685276

Harik,
Команда start интерпретирует первую пару кавычек, как заголовок будущего окна. Поэтому start "%file%" запустит еще один экземпляр cmd с заголовком %file% ( или значением этой переменной если она определена ), а не программу из этой переменной, как вы ожидали.


Время: 20:41.

Время: 20:41.
© OSzone.net 2001-