CMD/BAT - [решено] Как записать в переменную результат выполнения команды?

Ответить
Аватара пользователя
Runn3r

Re: CMD/BAT - [решено] Как записать в переменную результат выполнения команды?

Сообщение Runn3r »

Всем привет!

Не стал плодить темы, моя задача немного схожа, мне нужно осуществить поиск мест где находится файл, создал скрипт:



@echo off

setlocal EnableDelayedExpansion

For /F "Delims=" %%I In ('where /r d:\ "filename"') Do Set filename=%%~I

echo "%computername%"; !filename! > where.csv



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

Спасибо!
Аватара пользователя
alpap

Re: CMD/BAT - [решено] Как записать в переменную результат выполнения команды?

Сообщение alpap »

Runn3r,

сразу и записывать в файл, зачем там переменная:



Код:

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

@echo off
>where.csv (For /F "Delims=" %%I In ('where /r d:\ "filename"') Do @
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Как записать в переменную результат выполнения команды?

Сообщение Iska »

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

?




Цитата Runn3r:



мне нужно будет использовать where для нескольких, разных файлов
CMD/BAT - [решено] Как записать в переменную результат выполнения команды?




Ну, так и используйте несколько:



Код:

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

where.exe /r c:\ "notepad.exe" "calc.exe" "regedit.exe"




Скрытый текст

[spoiler]Изображение[/spoiler]
Аватара пользователя
Runn3r

Re: CMD/BAT - [решено] Как записать в переменную результат выполнения команды?

Сообщение Runn3r »

Runn3r, значит, используйте вариант коллеги alpap. Как указать несколько масок зараз — сообщением выше.




Цитата Runn3r:



Еще такой вопрос реально ли вообще вывести путь от куда запущены текущие java.exe процессы,
CMD/BAT - [решено] Как записать в переменную результат выполнения команды?




Что есть в Вашем понимании «путь от куда запущены»?
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Как записать в переменную результат выполнения команды?

Сообщение Iska »

Цитата Iska:



Что есть в Вашем понимании «путь от куда запущены»?
CMD/BAT - [решено] Как записать в переменную результат выполнения команды?




На ПК установлены разные версии Java, одновременно выполняются несколько процессов java, нужен вывод откуда они запущены, нужен только путь без аргументов с которыми они стартованы
Аватара пользователя
Runn3r

Re: CMD/BAT - [решено] Как записать в переменную результат выполнения команды?

Сообщение Runn3r »

Здравствуйте.

Нужно передать в скрипт переменную залогиненного пользователя.

Узнать кто залогинился можно командой 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
Аватара пользователя
Runn3r

Re: CMD/BAT - [решено] Как записать в переменную результат выполнения команды?

Сообщение Runn3r »

vdvas, возможно, Ваша проблема (для локальной машины) решается проще:



Код:

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

echo %userdomain%
echo %username%
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Как записать в переменную результат выполнения команды?

Сообщение Iska »

Надо полагать, Вы подразумеваете под этим путь к исполняемому файлу.



Код:

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

@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, различать что где есть — не знаю. Впрочем, дело Ваше.
Ответить

Вернуться в «Скриптовые языки администрирования Windows»