Страница 1 из 1

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

Добавлено: 2010-06-10 10:48:54
iye
Приветствую!
Имеется следующий код:

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

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
В чем может быть беда ?

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

Добавлено: 2010-06-10 13:33:20
Neus

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

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

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

Добавлено: 2010-06-10 13:44:21
iye
Не работает (.

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

Добавлено: 2010-06-10 14:19:31
skeletor
А что должен делать батник?

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

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

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

Добавлено: 2010-06-10 14:40:51
Gloft
Почитай 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!
)

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

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

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

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

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

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

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

Добавлено: 2010-06-10 14:58:07
Gloft
Вот то что просил на повершеле:

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

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

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

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

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

Добавлено: 2010-06-10 15:23:46
iye
Победил ) Может это и криво, но по сути в последней строке выводится именно нужная строка. т.е по проходу всех итераций цикла в переменной %d% окажется нужное значение с которым можно работать ).

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

Добавлено: 2010-06-10 15:57:23
skeletor
А можно ещё использовать tasklist с фильтрами.

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

Добавлено: 2010-06-11 13:06:31
Neus
вопщем так:

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

tasklist | find /i "explorer.exe"