Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


Цитата densan:
На выходе этой команды будет много строк, хочу весь вывод загнать в переменную, которую буду парсить и выбирать нужные значения.
Не получается вывод команды передать в переменную »
Цитата Elven:
весь вывод загнать в переменную не получится »
Можно загнать не в одну переменную, а во множество, например, переменных с номерами в именах. У меня нет Вашей программы smartctl.exe, привожу пример с командой Dir. Забираю каждую строку выдачи команды Dir в переменные @_1001 @_1002 ... а затем выдаю их на экран. Как уж с значениями этих переменных поступать - дело Ваше.
Код: Выделить весь код
@Echo Off
cls
	Set /A NNNN=1000
	FOR /F "usebackq delims=" %%i IN (`2^>nul Dir /B /S /A:-D "Z:\Box_In\Мой контент\Книги\Дискета_от_книги\"`) DO Call :Mass "%%i"

	FOR /F "usebackq tokens=1* delims==" %%i IN (`Set @_`) DO Echo %%j
pause
GoTo :Eof

:Mass
	Set /A NNNN+=1
	Set "@_%NNNN%=%~1"
GoTo :Eof
Идею подсмотрел у alpap

"В лоб" весь вывод загнать в переменную не получится. Но, если нельзя, а очень хочется, то можно, только надо придумать свой разделитель строк вместо CrLf , например, Ы (чтоб никто не догадался, или вообще, какой-нибудь символ псевдографики, например, ░).
Код: Выделить весь код
@Echo Off
cls
	Set "Out="
	Set "Delim=Ы"
	FOR /F "usebackq delims=" %%i IN (`2^>nul Dir /B /S /A:-D "Z:\Box_In\Мой контент\Книги\Дискета_от_книги\"`) DO Call :String "%%i"

	Echo %Out%
pause
GoTo :Eof

:String
	Set "Out=%Out%%~1%Delim%"
GoTo :Eof
Но, возможно, при этом получим очень длинную строку и получим ошибку и радость от такой строки очень сомнительна - её обработать гораздо труднее, чем в предыдущем случае.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 20-11-2018 в 16:23.

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:16, 20-11-2018 | #3