Bla*_*ise 2 windows cmd batch-file
在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%
Run Code Online (Sandbox Code Playgroud)
我奋斗的确切地点是:
SET LIST!i!=!LISTNAME! "%%x"
Run Code Online (Sandbox Code Playgroud)
我想要的地方例如是:
SET LIST1=!LIST1! "%%x"
Run Code Online (Sandbox Code Playgroud)
但是listname只是转换为字符串LIST1,而不是变量LIST1.我也尝试过没有成功:
SET LIST!i!=!LIST!i!! "%%x"
Run Code Online (Sandbox Code Playgroud)
脚本的用途:将JPG文件名放在3个列表EDIT中以回答第一个注释:文件名称以循环方式分布并用空格分隔.
小智 6
假设循环分布,您可以使用模数计算轻松获取列表编号.出于演示目的,我只输出没有drive:path的filename.ext.
@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%
Run Code Online (Sandbox Code Playgroud)
样本输出
"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
Run Code Online (Sandbox Code Playgroud)
编辑插入了for variable类型的延迟扩展.