2016-05-19 5 views
0

У меня есть .exe, который печатает результаты нескольких устройств, подключенных к ПК. Однако каждый элемент находится на отдельной строке, однако в зависимости от того, что связано с результатами, можно использовать для многих устройств.batch file multiple results to seperate variables

Как установить каждый из них в отдельную переменную?

testapp.exe -l 
340e42e15fc02fb99e7caf66565d3c881081390c 
4e8e93bd2a401c34e3d0d257de07af5d624521c6 

ниже будет работать только тогда, когда результат один прибор

for /f "tokens=1 " %%a in ('testapp.exe') do set DEVICE1=%%a 

идеи?

ответ

0

Вы можете использовать array для хранения каждого результата в каждом элементе массива:

@echo off 
setlocal EnableDelayedExpansion 

set n=0 
for /F %%a in ('testapp.exe -l') do (
    set /A n+=1 
    set "device[!n!]=%%a" 
) 

echo The devices are: 
for /L %%i in (1,1,%n%) do echo %%i- !device[%%i]! 
+0

Спасибо, какой% varible% я могу использовать с результатами? echo% device% | echo% device1% | ETC – rcmpayne

+0

Если 'device' - это имя массива, то'% device [1]% 'является первым элементом,'% device [2]% 'является вторым и т. Д. См. [Здесь] (https://en.wikipedia.org/wiki/Array_data_structure#One-dimensional_arrays) или [здесь] (https://en.wikipedia.org/wiki/Comparison_of_programming_languages_ (массив) #Indexing) или описание ссылки на массив, приведенное выше ... – Aacini

0
@echo off 
setlocal enabledelayedexapansion 
set i=0 
for /f %%a in ('testapp.exe -l') do (
    set /a i+=1 
    set device!i!=%%a 
) 
echo %i% devices: 
set device