Нерабочий кусок батника

Windows 95, 98, ME и 3,11; WinNT, Win2000, WinXP, Win2003, Vista, 7
Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
iye
ст. сержант
Сообщения: 360
Зарегистрирован: 2008-07-29 9:02:04

Нерабочий кусок батника

Непрочитанное сообщение iye » 2010-06-10 10:48:54

Приветствую!
Имеется следующий код:

Код: Выделить всё

for /f "tokens=1* usebackq" %%a in (`D:\PCTOOLS\pslist.exe Far 2>&1 | qgrep Far`) do set d=%%a
echo.%d%
Соответственно ничего не выдается. Хотя D:\PCTOOLS\pslist.exe Far 2>&1 | qgrep Far - выдает строку корректно:

Код: Выделить всё

Far                4040   8   1   46   7376     0:00:01.234     0:07:57.021
В чем может быть беда ?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Neus
капитан
Сообщения: 1980
Зарегистрирован: 2008-09-08 21:59:56

Re: Нерабочий кусок батника

Непрочитанное сообщение Neus » 2010-06-10 13:33:20

Код: Выделить всё

for /f "tokens=1* usebackq" %%a in (`D:\PCTOOLS\pslist.exe Far 2>&1 | qgrep Far`) do (set d=%%a
echo.%d%)
или

Код: Выделить всё

for /f "tokens=1* usebackq" %%a in (`D:\PCTOOLS\pslist.exe Far 2>&1 | qgrep Far`) do echo %%a

iye
ст. сержант
Сообщения: 360
Зарегистрирован: 2008-07-29 9:02:04

Re: Нерабочий кусок батника

Непрочитанное сообщение iye » 2010-06-10 13:44:21

Не работает (.

Аватара пользователя
skeletor
майор
Сообщения: 2548
Зарегистрирован: 2007-11-16 18:22:04

Re: Нерабочий кусок батника

Непрочитанное сообщение skeletor » 2010-06-10 14:19:31

А что должен делать батник?

iye
ст. сержант
Сообщения: 360
Зарегистрирован: 2008-07-29 9:02:04

Re: Нерабочий кусок батника

Непрочитанное сообщение iye » 2010-06-10 14:33:17

Мне нужно проверить, запущен ли процесс с определенным именем. Во фре делаетля легко и не напряжно, а вот в винде что то никак не хочет. Алгоритм: берем список процессов, грепаем по имени, присваиваем результат переменной. Сравниваем с пустым значением, если равны, выполняем некоторые действия. Вобщем проблема вся во взятии результата вывода в переменную.

Gloft
лейтенант
Сообщения: 645
Зарегистрирован: 2008-03-09 11:32:12
Откуда: Москва

Re: Нерабочий кусок батника

Непрочитанное сообщение Gloft » 2010-06-10 14:40:51

Почитай help по команде set.
Она работает немного иначе в циклах.
Цикл for имеет следующий вид:
for итерация do (оператор)

Попробуй

Код: Выделить всё

for /f "tokens=1* usebackq" %%a in (`D:\PCTOOLS\pslist.exe Far 2>&1 | qgrep Far`) do (
    set d=%%a
    echo.!d!
)

Gloft
лейтенант
Сообщения: 645
Зарегистрирован: 2008-03-09 11:32:12
Откуда: Москва

Re: Нерабочий кусок батника

Непрочитанное сообщение Gloft » 2010-06-10 14:43:44

iye писал(а):Мне нужно проверить, запущен ли процесс с определенным именем. Во фре делаетля легко и не напряжно, а вот в винде что то никак не хочет. Алгоритм: берем список процессов, грепаем по имени, присваиваем результат переменной. Сравниваем с пустым значением, если равны, выполняем некоторые действия. Вобщем проблема вся во взятии результата вывода в переменную.
Принципиально ли использовать батник?
Может проще VBScript или PowerShell

iye
ст. сержант
Сообщения: 360
Зарегистрирован: 2008-07-29 9:02:04

Re: Нерабочий кусок батника

Непрочитанное сообщение iye » 2010-06-10 14:46:45

Читал. Вот уже полдня читаю... Не понимаю зачем все советуют составной оператор, хотя выполняется в принципе одна операция - присвоение. И проход цикла только 1. В остальном не вижу различий. По большому счету не важно на чем будет писано, лишь бы попроще и безопаснее и полегче )

Gloft
лейтенант
Сообщения: 645
Зарегистрирован: 2008-03-09 11:32:12
Откуда: Москва

Re: Нерабочий кусок батника

Непрочитанное сообщение Gloft » 2010-06-10 14:50:31

iye писал(а):Читал. Вот уже полдня читаю... Не понимаю зачем все советуют составной оператор, хотя выполняется в принципе одна операция - присвоение. И проход цикла только 1. В остальном не вижу различий. По большому счету не важно на чем будет писано, лишь бы попроще и безопаснее и полегче )
Ты не забывай это тебе не шел или какойнить С++, это батник и тут многое имеет значение.
А различия не только в скобках но и в echo.!d!

Gloft
лейтенант
Сообщения: 645
Зарегистрирован: 2008-03-09 11:32:12
Откуда: Москва

Re: Нерабочий кусок батника

Непрочитанное сообщение Gloft » 2010-06-10 14:58:07

Вот то что просил на повершеле:

Код: Выделить всё

Get-Process | where {$_.name -eq "Имя процесса" } | Format-Wide

iye
ст. сержант
Сообщения: 360
Зарегистрирован: 2008-07-29 9:02:04

Re: Нерабочий кусок батника

Непрочитанное сообщение iye » 2010-06-10 15:04:57

Запустил батник из cmd (До этого запускал из под фара). И выяснилось что ему не нравятся операции с потоками вывода (конкретно 2>&1 и |) Вывод идет боле мене нормальный, только осталась проблема отрезать лишний вывод ..

iye
ст. сержант
Сообщения: 360
Зарегистрирован: 2008-07-29 9:02:04

Re: Нерабочий кусок батника

Непрочитанное сообщение iye » 2010-06-10 15:23:46

Победил ) Может это и криво, но по сути в последней строке выводится именно нужная строка. т.е по проходу всех итераций цикла в переменной %d% окажется нужное значение с которым можно работать ).

Аватара пользователя
skeletor
майор
Сообщения: 2548
Зарегистрирован: 2007-11-16 18:22:04

Re: Нерабочий кусок батника

Непрочитанное сообщение skeletor » 2010-06-10 15:57:23

А можно ещё использовать tasklist с фильтрами.

Аватара пользователя
Neus
капитан
Сообщения: 1980
Зарегистрирован: 2008-09-08 21:59:56

Re: Нерабочий кусок батника

Непрочитанное сообщение Neus » 2010-06-11 13:06:31

вопщем так:

Код: Выделить всё

tasklist | find /i "explorer.exe"