Страница 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