|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - результат команды в переменную |
|
|
CMD/BAT - результат команды в переменную
|
Новый участник Сообщения: 18 |
Здравствуйте!Подскажите, пожалуйста, как можно занести результат выполнения команды в переменную?
Делаю следующим образом: setlocal enabledelayedexpansion FOR /F "usebackq delims=" %%a IN (`handle.exe -accepteula`) DO ( set result=%%a ) echo %result% Подскажите, пожалуйста, что нужно подправить? |
|
Отправлено: 15:40, 17-09-2015 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Никак. Не надо «заносить результат выполнения команды в переменную», надо сразу производить потребные действия над каждой строкой вывода — там, где у Вас находится «set result=%%a».
|
Отправлено: 17:34, 17-09-2015 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать |
Отправлено: 21:36, 20-09-2015 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата alpap:
|
|
Отправлено: 23:36, 20-09-2015 | #4 |
Ветеран Сообщения: 1758
|
alpap, В переменную заносится только одна строка, сначала первая, потом вторая ... потом последняя. Поэтому нужно либо обрабатывать вывод сразу в цикле, либо отфильтровывать нужную строку, либо заносить в разные переменные. Покажите вывод:
И опишите, что конкретно вам нужно взять в переменную |
|
Отправлено: 00:04, 21-09-2015 | #5 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Foreigner, да Вы перепутали это не мне и я то знаю, тоже хотел помочь чем-то BreakHeart, может ему просто вывод достаточно увидеть и ничего обрабатывать он и не собирается, разные задачи бывают.
|
Отправлено: 00:26, 21-09-2015 | #6 |
Ветеран Сообщения: 1758
|
alpap, Извиняюсь, невнимательно посмотрел. Но и в вашем примере можно просто сделать echo %%a, т.е. переменная result явно лишняя. Если надо сохранить весь вывод можно создать массив переменных, например:
@echo off setlocal enabledelayedexpansion set cnt=100 for /f "tokens=*" %%i in ('dir /b') do call:set "%%i" for /f "tokens=2 delims==" %%i in ('set var_') do echo %%i echo. echo %var_101% первый элемент echo %var_102% второй echo !var_%cnt%! последний goto:eof :set set /a cnt+=1 set "var_%cnt%=%~1" |
Отправлено: 00:50, 21-09-2015 | #7 |
Новый участник Сообщения: 18
|
Профиль | Отправить PM | Цитировать handle.exe - это программа из набора sysinternals, которая выводит список процессов и к каждому процессу хендл, который он держит. проблема в том что сначала идет строка с именем процесса, а потом список хенделов открытых процессов. мне нужно посмотреть есть ли нужный хендл и если есть, то вывесть имя процесса. есть вариант сначала записать в файл, потом пройтись find по файлу, но сразу возникает вопрос как определить нашел ли find нужную строку или нет?
|
Отправлено: 10:10, 21-09-2015 | #8 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата BreakHeart:
C:\Out>handle /accepteula "C:\Out\Untitled.FR10.pdf" Handle v3.46 Copyright (C) 1997-2011 Mark Russinovich Sysinternals - www.sysinternals.com AcroRd32.exe pid: 4564 type: File 1C0: C:\Out\Untitled.FR10.pdf @echo off
setlocal enableextensions enabledelayedexpansion
set sSourcePath=C:\Out\Untitled.FR10.pdf
set sProcessName=
for /f "usebackq" %%i in (
`handle.exe /accepteula "%sSourcePath%" ^| find.exe /i "%sSourcePath%"`
) do (
set sProcessName=%%i
)
if defined sProcessName (
echo [%sProcessName%]
) else (
echo Nothing found
)
endlocal
exit /b 0
|
|
Отправлено: 10:57, 21-09-2015 | #9 |
Ветеран Сообщения: 1758
|
BreakHeart, Может лучше сразу искать по нужному хэндлу? Например, запустил mp3 в консольном noisy.exe (такой проигрыватель):
Ищу кто держит файл: > handle "05 - Smoke" | findstr "pid" Noisy.exe pid: 5492 type: File 310: D:\test\05 - Smoke on the Water.mp3 ЗЫ. Для закрытия необходима админская консоль |
Последний раз редактировалось Foreigner, 21-09-2015 в 11:25. Отправлено: 11:20, 21-09-2015 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Как записать в переменную результат выполнения команды? | MSI | Скриптовые языки администрирования Windows | 64 | 24-12-2020 18:20 | |
CMD/BAT - [решено] Вычислить размер системного диска и результат подставить в переменную | DR_WELL | Скриптовые языки администрирования Windows | 1 | 10-01-2014 09:03 | |
MySQL - [решено] Как узнать результат команды SELECT | Apock | Программирование и базы данных | 4 | 09-02-2013 23:23 | |
CMD/BAT - [решено] Строка результат выполнения filever.exe передать в переменную | dARKest | Скриптовые языки администрирования Windows | 3 | 07-09-2009 22:50 | |
[решено] Объединить результат mysql_fetch_array() в одну переменную | D_Master | Вебмастеру | 9 | 10-07-2009 17:23 |
|