Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 批处理:从其他变量中设置一个变量_Batch File - Fatal编程技术网

Batch file 批处理:从其他变量中设置一个变量

Batch file 批处理:从其他变量中设置一个变量,batch-file,Batch File,我所要做的应该是简单的批量老兵。我有一个环境变量列表: 核心1 核心2 CORE3等 我试图将它们设置为一个名为HOSTS的新变量。每个变量都应该用空格分隔。因此HOSTS=“CORE1 CORE2 CORE3” 如果我正确理解了您的问题,您希望将多个变量CORE1的内容连接到CORE20(如果设置)到一个变量HOSTS,并用空格分隔各个值。您可以这样做(我添加了一些示例值以用于可运行示例): 此脚本将输出: 1 3 4 6 8 12 17 这是你的工作吗 setlocal enabledel

我所要做的应该是简单的批量老兵。我有一个环境变量列表:

核心1 核心2 CORE3等

我试图将它们设置为一个名为HOSTS的新变量。每个变量都应该用空格分隔。因此HOSTS=“CORE1 CORE2 CORE3”


如果我正确理解了您的问题,您希望将多个变量
CORE1
的内容连接到
CORE20
(如果设置)到一个变量
HOSTS
,并用空格分隔各个值。您可以这样做(我添加了一些示例值以用于可运行示例):

此脚本将输出:

1 3 4 6 8 12 17
这是你的工作吗

setlocal enabledelayedexpansion
set inc=0
:heck
set /a "inc+=1"
if defined CORE%inc% (
    set "HOSTS=%HOSTS% !CORE%inc%!
    goto heck
)
rem remove leading space from %HOSTS%
set HOSTS=%HOSTS:~1%
这里有一个更完整的测试脚本

@echo off
setlocal enabledelayedexpansion

set CORE1=foo
set CORE2=bar
set CORE3=baz
set CORE4=qux
set CORE5=quux
set CORE6=corge
set CORE7=grault
set CORE8=garply
set CORE9=waldo
set CORE10=fred
set CORE11=plugh
set CORE12=xyzzy
set CORE13=thud

set inc=0
:heck
set /a "inc+=1"
if defined CORE%inc% (
    set "HOSTS=%HOSTS% !CORE%inc%!
    goto heck
)
rem remove leading space from %HOSTS%
set HOSTS=%HOSTS:~1%

echo %HOSTS%
示例输出:

C:\Users\me\Desktop>test
foo bar baz qux quux corge grault garply waldo fred plugh xyzzy thud
您是否关心元素的精确顺序?这将按照envvar名称的字母顺序累加vars CORE*的所有值

set HOSTS=%CORE1%
for /L %%x in (2,1,20) do (
   if defined CORE%%x (
      set "HOSTS=!HOSTS! !CORE%%x!"
   )
)
安东尼奥

C:\Users\me\Desktop>test
foo bar baz qux quux corge grault garply waldo fred plugh xyzzy thud
@ECHO OFF
SETLOCAL
:: set 'COREn' to a value for testing
FOR /l %%i IN (1,1,10) DO SET core%%i=str%%i
::
(SET hosts=)
FOR /f "tokens=2delims==" %%i IN ('set core') DO CALL :addval %%i
ECHO hosts=%hosts%
GOTO :eof

:addval
IF DEFINED hosts (SET hosts=%hosts% %1) ELSE (SET hosts=%1)
GOTO :EOF 
set HOSTS=%CORE1%
for /L %%x in (2,1,20) do (
   if defined CORE%%x (
      set "HOSTS=!HOSTS! !CORE%%x!"
   )
)