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
В чем может быть беда ?
iye
-
Хостинг HostFood.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
- капитан
- Сообщения: 1938
- Зарегистрирован: 2008-09-08 21:59:56
Непрочитанное сообщение
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
Neus
-
iye
- ст. сержант
- Сообщения: 360
- Зарегистрирован: 2008-07-29 9:02:04
Непрочитанное сообщение
iye » 2010-06-10 14:33:17
Мне нужно проверить, запущен ли процесс с определенным именем. Во фре делаетля легко и не напряжно, а вот в винде что то никак не хочет. Алгоритм: берем список процессов, грепаем по имени, присваиваем результат переменной. Сравниваем с пустым значением, если равны, выполняем некоторые действия. Вобщем проблема вся во взятии результата вывода в переменную.
iye
-
Gloft
- лейтенант
- Сообщения: 645
- Зарегистрирован: 2008-03-09 11:32:12
- Откуда: Москва
Непрочитанное сообщение
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
-
Gloft
- лейтенант
- Сообщения: 645
- Зарегистрирован: 2008-03-09 11:32:12
- Откуда: Москва
Непрочитанное сообщение
Gloft » 2010-06-10 14:43:44
iye писал(а):Мне нужно проверить, запущен ли процесс с определенным именем. Во фре делаетля легко и не напряжно, а вот в винде что то никак не хочет. Алгоритм: берем список процессов, грепаем по имени, присваиваем результат переменной. Сравниваем с пустым значением, если равны, выполняем некоторые действия. Вобщем проблема вся во взятии результата вывода в переменную.
Принципиально ли использовать батник?
Может проще VBScript или PowerShell
Gloft
-
iye
- ст. сержант
- Сообщения: 360
- Зарегистрирован: 2008-07-29 9:02:04
Непрочитанное сообщение
iye » 2010-06-10 14:46:45
Читал. Вот уже полдня читаю... Не понимаю зачем все советуют составной оператор, хотя выполняется в принципе одна операция - присвоение. И проход цикла только 1. В остальном не вижу различий. По большому счету не важно на чем будет писано, лишь бы попроще и безопаснее и полегче )
iye
-
Gloft
- лейтенант
- Сообщения: 645
- Зарегистрирован: 2008-03-09 11:32:12
- Откуда: Москва
Непрочитанное сообщение
Gloft » 2010-06-10 14:50:31
iye писал(а):Читал. Вот уже полдня читаю... Не понимаю зачем все советуют составной оператор, хотя выполняется в принципе одна операция - присвоение. И проход цикла только 1. В остальном не вижу различий. По большому счету не важно на чем будет писано, лишь бы попроще и безопаснее и полегче )
Ты не забывай это тебе не шел или какойнить С++, это батник и тут многое имеет значение.
А различия не только в скобках но и в echo.!d!
Gloft
-
Gloft
- лейтенант
- Сообщения: 645
- Зарегистрирован: 2008-03-09 11:32:12
- Откуда: Москва
Непрочитанное сообщение
Gloft » 2010-06-10 14:58:07
Вот то что просил на повершеле:
Код: Выделить всё
Get-Process | where {$_.name -eq "Имя процесса" } | Format-Wide
Gloft
-
iye
- ст. сержант
- Сообщения: 360
- Зарегистрирован: 2008-07-29 9:02:04
Непрочитанное сообщение
iye » 2010-06-10 15:04:57
Запустил батник из cmd (До этого запускал из под фара). И выяснилось что ему не нравятся операции с потоками вывода (конкретно 2>&1 и |) Вывод идет боле мене нормальный, только осталась проблема отрезать лишний вывод ..
iye
-
iye
- ст. сержант
- Сообщения: 360
- Зарегистрирован: 2008-07-29 9:02:04
Непрочитанное сообщение
iye » 2010-06-10 15:23:46
Победил ) Может это и криво, но по сути в последней строке выводится именно нужная строка. т.е по проходу всех итераций цикла в переменной %d% окажется нужное значение с которым можно работать ).
iye
-
Neus
- капитан
- Сообщения: 1938
- Зарегистрирован: 2008-09-08 21:59:56
Neus