Как объединить список строк в cmd? - PullRequest
0 голосов
/ 12 марта 2019

Рассмотрим одну строку:

for %s in (str1 str2 str3) do @echo %s

, если бы я мог определить пустую строку, то:

set "var=empty" & for %s in (str1 str2 str3) do @set "var=%var%, %s"

дайте мне то, что я хочу.Я попробовал set "var=0:~1" вещь из здесь :

set "var=0:~1" & for %s in (str1 str2 str3) do @set "var=%var%, %s"

, но она не работает.В конце я хочу получить строку str1, str2, str3, которая будет echo ed.

PS Мне известно о решении for %s in (str1 str2 str3) do @(@Echo|@Set /p="%A, "), но оно не ведет себятак, как я хочу.в основном он печатает несколько раз на стандартный вывод, пропуская новую строку, а не один раз, который мне требуется.Я пытаюсь использовать эту команду внутри unig_g("...") внутри Scilab / ScicosLab, который печатает пустой по этой причине.

1 Ответ

4 голосов
/ 12 марта 2019

То, что вы пытаетесь выполнить, требует использования отложенного расширения переменной. В пакетном файле вы обычно включаете его с помощью команды SETLOCAL, но, поскольку вы используете командную строку, вам необходимо выполнить cmd.exe и использовать соответствующую опцию, чтобы включить отложенное расширение.

cmd /V:ON /C "set "var=" & (for %s in (str1 str2 str3) do @IF DEFINED var (@set "var=!var!, %s") else (set "var=%s")) & @echo !var!"
...