2017-01-06 3 views
0

Как сделать несколько «линейных» переменных в одной строке?Batch - несколько линейных переменных в одном ECHO

@echo off 
setlocal enableDelayedExpansion 
...more stuff 

set /p input=(Number): 
...more 
:somewhere 
(some commands to set variables) 
:loop 
if %loopcounter%==%input% goto somewhere 
set /a loopcounter=loopcounter+1 
set display=!d%loopcounter%! 
echo %display% 
pause 
goto loop 

So I get: 
var1 
var2 
var3 
var(anything up to %number%) 
But how do I make it: 
var1 var2 var3 var(anything up to %number%) 

эхо% var1%% var2%% var3% может не работать, так как количество переменных может идти ни к чему

Есть ли способ, чтобы «добавить» новые переменные в переменную без ее сброса ?

+1

Возможный дубликат [Windows партии: эхо без новой строки] (http://stackoverflow.com/questions/7105433/windows-batch-echo-without-new-line) – Melebius

ответ

4

Вы можете использовать <nul set/p ="%display% " (< - пространство после) для этого.

После совершенно правильной просьбы @jeb я добавлю некоторые пояснения:

С < вы можете отправить данные через стандартный ввод. В данном случае это заменяет обычный набор текст и нажав клавишу ввод пользователя, который обычно печатает здесь в связи с переключателем /p.
Отправка nul результатов в пустом входе.
Так что единственное, отображаемая строка отображается запрос на ввод пользователя (обычно), который в данном случае является переменным.

Source

+2

Использование цитат делает замыкающий пробел visible: ' aschipfl

+0

Действительно! Спасибо за подсказку. Должен работать на более тонкие вещи немного больше, я думаю :) – geisterfurz007

+2

Вы должны добавить некоторые объяснения, что делает код. Что касается обычного пользователя, это не очевидно. – jeb

4

Вы можете Concat строки первой в новой переменной.

set "display=" 
for /L %%n in (1 1 %input%) do (
    set "display=!display! !var%%n!" 
) 
echo !display! 
+0

Удивительный! ТОЧНО, что мне нужно. Мне просто нужно поменять местами переменные Теперь – HuskyHus

+0

@HuskyHus Если это «ТОЧНО», что вам нужно быть справедливым и отметить это, как принято отвечать. (Хотя я предполагаю, что уже поздно, и этот Хаски давно ушел ...) – geisterfurz007

Смежные вопросы