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
Windows CMD批处理:在循环中连接变量名_Windows_Batch File_Cmd - Fatal编程技术网

Windows CMD批处理:在循环中连接变量名

Windows CMD批处理:在循环中连接变量名,windows,batch-file,cmd,Windows,Batch File,Cmd,在Windows CMD批处理循环中,我想使用动态变量:list1、list2和list3,其中数字1-3是动态的(即:list&I),但我正在努力: setlocal enabledelayedexpansion enableextensions SET threads=3 set i=1 for /R %%x in (*.jpg) do ( call set LISTNAME=LIST!i! & SET LIST!i!=!LISTNAME! "%%x" & set /A

在Windows CMD批处理循环中,我想使用动态变量:list1、list2和list3,其中数字1-3是动态的(即:list&I),但我正在努力:

setlocal enabledelayedexpansion enableextensions
SET threads=3
set i=1

for /R %%x in (*.jpg) do  ( call set LISTNAME=LIST!i! & SET LIST!i!=!LISTNAME! "%%x" & set /A i=!i!+1  & if !i! gtr %threads% (set i=1))

echo "first" %LIST1%
echo "second" %LIST2%
echo "third" %LIST3%
我挣扎的确切地点是:

SET LIST!i!=!LISTNAME! "%%x" 
例如,我希望:

SET LIST1=!LIST1! "%%x"
然而,listname只是转换为字符串LIST1,而不是变量LIST1。 我也尝试过,但没有成功:

SET LIST!i!=!LIST!i!! "%%x"
脚本的用途:将JPG文件名放在3个列表中
编辑以回答第一条注释:文件名以循环方式分布,并用空格分隔。

假设循环分布,您可以通过模数计算轻松获得列表编号。出于演示目的,我只输出filename.ext而不输出drive:path

@Echo off
setlocal enabledelayedexpansion enableextensions
Set /A "threads=3,i=0"
:: initialize List
For /L %%n in (1,1,%threads%) Do Set "List%%n="

for /R %%x in (*.jpg) do  ( 
  Set /A "n=i %% threads + 1,i+=1"
  for %%n in (!n!) do Set "List%%n=!List%%n! %%~nxx"
  rem call set "LIST!n!=%%LIST!n!%% %%~nxx"
)
echo "first " %LIST1%
echo "second" %LIST2%
echo "third " %LIST3%
样本输出

"first "  watch_dogs1.jpg watch_dogs4.jpg watch_dogs7.jpg
"second"  watch_dogs2.jpg watch_dogs5.jpg watch_dogs8.jpg
"third "  watch_dogs3.jpg watch_dogs6.jpg watch_dogs9.jpg

编辑插入了延迟扩展的变量类型。

您希望如何在列表中分发图片?循环赛?列表中的文件名应该如何分隔,一个空格?如果已将命令括在括号中,则无需将其保留在一行中。使用
&
使用
调用集列表!我!=%%列表我!%%“%%x”
对于(“!i!”)中的/F%%i,请设置列表%%i=!列出%%i!“%%x”
。这一管理在Thank Aacini上进行了解释:这非常有用,尤其是!列出%%i!我用它和下面LotPings的答案结合起来递归地显示列表。非常优雅!因此,诀窍在于除了集合和%%LIST之外还使用“Call”!n!%%。我从你的代码中学到了很多!批处理多年,我想记住,我仍然在这里学习,所以,感谢@Aacini与for的扩展。