PDA

Показать полную графическую версию : [решено] Как записать в переменную результат выполнения команды?


Страниц : 1 [2] 3 4

Iska
24-11-2015, 00:12
Ага. Я брал поновее версию. Но ни моя, ни Ваша без устройства работать не хотят :).

В предыдущем варианте я что-то перебдел. Попробуйте так:
@echo off

for /f "usebackq tokens=2" %%i in (
`2^>^&1 "fastboot.exe" oem get_build_version ^| find.exe /i "^(bootloader^)"`
) do set sBootLoader=%%i

if defined sBootLoader echo [%sBootLoader%]
или так:
@echo off

for /f "usebackq tokens=2" %%i in (
`2^>^&1 "fastboot.exe" oem get_build_version ^| find.exe /i "(bootloader)"`
) do set sBootLoader=%%i

if defined sBootLoader echo [%sBootLoader%]

rectator
24-11-2015, 00:35
Естественно без устройства не работает =)

Но зато ваш последний вариант отлично работает!
Спасибо за помощь.

Aquilo
14-02-2018, 14:03
Есть команда wmic.exe Process where "Name='Far.exe'" get WorkingSetSize
Вывод WorkingSetSize
6393856
Нужно засунуть вторую строчку (число) в переменную (через файл не хочу)
Попробовал предложанные в теме форы, не получилось

megaloman
14-02-2018, 15:53
@Echo Off
cls

FOR /F "usebackq skip=1 delims=" %%s IN (`wmic.exe Process where "Name='Far.exe'" get WorkingSetSize`) DO Set /A S=%%s &GoTo :Cont
:Cont

Echo %S%
Pause

DJ Mogarych
14-02-2018, 16:10
Если я правильно понял задачу (Powershell).
$p = Get-CimInstance win32_process -filter "name='far.exe'" | Select -ExpandProperty WorkingSetSize
New-Item env:farworkingsetsize -Value $p

x0r
14-02-2018, 21:46
Есть такая буква!
Мне недавно тоже самое понадобилось и я сафсемвахуе был, когда понял что нету такой возм-сти в cmd-bat. Но оказалось что всё-таки можно и причем давно... но таким сопособом, что фиг додумаесся :yes: Способ нашелся тут (http://forum.oszone.net/post-1632312-3.html)
пользуемся ;) Для случая Aquilo

@echo off
@setlocal ENABLEDELAYEDEXPANSION
for /f "delims= tokens=* usebackq" %%i in (`wmic.exe Process where "Name='TOTALCMD.EXE'" get WorkingSetSize`) do @if not X%%i==X set FILES=!FILES! %%i
echo %FILES%
pause
exit


... и дальше через for "tokens=" берем что нужно. Мне понадобились имена папок и вот так
for /f "delims= tokens=* usebackq" %%i in (`"dir /b g:\"`) do @if not X%%i==X set FILES=!FILES! %%i

имена загнал в одну переменную и через for подставлял.

Runn3r
14-08-2018, 08:23
Всем привет!
Не стал плодить темы, моя задача немного схожа, мне нужно осуществить поиск мест где находится файл, создал скрипт:

@echo off
setlocal EnableDelayedExpansion
For /F "Delims=" %%I In ('where /r d:\ "filename"') Do Set filename=%%~I
echo "%computername%"; !filename! > where.csv

Но, проблема в том что на выходе получаю только путь до последнего найденного файла, а их несколько, подскажите - как осуществить вывод всех найденных?
Спасибо!

alpap
14-08-2018, 09:35
Runn3r,
сразу и записывать в файл, зачем там переменная:

@echo off
>where.csv (For /F "Delims=" %%I In ('where /r d:\ "filename"') Do @<nul set /p="%%~I;")
pause

Iska
14-08-2018, 09:41
>"where.csv" (
for /f "delims=" %%i in ('where.exe /r d:\ "filename"') do echo %ComputerName%;%%~i
)


… @<nul set /p="%%~I;") »
Они ж все в одну строчку будут?!

alpap
14-08-2018, 09:45
Они ж все в одну строчку будут?! »
полагаю раз запись в csv, то так и надо.

Iska
14-08-2018, 09:50
alpap, спасибо, ясно.

Runn3r
14-08-2018, 14:52
Спасибо всем за помощь.
Не получается сделать в одну строчку, мне нужно будет использовать where для нескольких, разных файлов и чтобы в начале прописывалось имя компьютера: %computername%;filename1;filename2 и тд

@echo off
>where.csv echo %computername% && (For /F "Delims=" %%I In ('where /r d:\ "filename1"') Do @<nul set /p="%%~I;") && (For /F "Delims=" %%I In ('where /r d:\ "filename2"') Do @<nul set /p="%%~I;")
pause

Еще такой вопрос реально ли вообще вывести путь от куда запущены текущие java.exe процессы, без вывода аргументов с которыми он стартован? Пробовал через wmic с выводом commandline - путь указывает, но еще и указывает кучу не нужных аргументов с которыми стартован процесс (((

В итоге хотел бы получить такую информацию: %computername%;filename1;filename2;all_java.exe_process_path

Заранее огромное спасибо!

Iska
14-08-2018, 15:06
Runn3r, так Вам как надо-то? В моём понимании или в понимании коллеги alpap? Такой:
ComputerName;c:\Windows\notepad.exe
ComputerName;c:\Windows\System32\notepad.exe
ComputerName;c:\Windows\SysWOW64\notepad.exe
или такой:
ComputerName;c:\Windows\notepad.exe;c:\Windows\System32\notepad.exe;c:\Windows\SysWOW64\notepad.exe
?

мне нужно будет использовать where для нескольких, разных файлов »
Ну, так и используйте несколько:
where.exe /r c:\ "notepad.exe" "calc.exe" "regedit.exe"
https://i.imgur.com/MfVeia9.png

Runn3r
14-08-2018, 15:09
нужно чтобы информация выводилась в строку

Iska
14-08-2018, 15:26
Runn3r, значит, используйте вариант коллеги alpap. Как указать несколько масок зараз — сообщением выше.

Еще такой вопрос реально ли вообще вывести путь от куда запущены текущие java.exe процессы, »
Что есть в Вашем понимании «путь от куда запущены»?

Runn3r
14-08-2018, 15:34
Что есть в Вашем понимании «путь от куда запущены»? »
На ПК установлены разные версии Java, одновременно выполняются несколько процессов java, нужен вывод откуда они запущены, нужен только путь без аргументов с которыми они стартованы

Iska
14-08-2018, 17:07
Надо полагать, Вы подразумеваете под этим путь к исполняемому файлу.
@echo off
setlocal enableextensions enabledelayedexpansion

>"where.csv" (
<nul set /p sVar=%ComputerName%;
for /f "usebackq delims=" %%i in (`where.exe /r c:\ "notepad.exe" "calc.exe" "regedit.exe"`) do <nul set /p sVar=%%~i;
for /f "usebackq delims=" %%i in (`wmic.exe Process where "Name = 'java.exe'" get ExecutablePath /value`) do for /f "tokens=2 delims==" %%j in ("%%i") do <nul set /p sVar=%%j;
)

endlocal
exit /b 0

Правда, как Вы собираетесь в этом месиве, по недоразумению именуемом Вами csv, различать что где есть — не знаю. Впрочем, дело Ваше.

vdvas
05-11-2018, 20:51
Здравствуйте.
Нужно передать в скрипт переменную залогиненного пользователя.
Узнать кто залогинился можно командой WMIC /NODE: "localhost" COMPUTERSYSTEM GET USERNAME
На выходе получается
UserName
DOMAIN\user

Нужно первую строчку убрать и имя домена с обратным слешем тоже.
Попробовал из того что выложено на форуме - не помогло.

FOR /F "usebackq skip=1 delims=" %%I IN (`WMIC /NODE: "localhost" COMPUTERSYSTEM GET USERNAME`) DO Set /P S=%%I
Echo S

Iska
05-11-2018, 21:36
vdvas, возможно, Ваша проблема (для локальной машины) решается проще:
echo %userdomain%
echo %username%

vdvas
06-11-2018, 10:36
Я на удаленной машине выполняю скрипт через psexec с ключом s, таким образом %username% здесь будет СИСТЕМА.
Поэтому такие системные переменные не годятся.




© OSzone.net 2001-2012