gpt4 book ai didi

Windows CMD 批处理 : concatenating variable NAME in a loop

转载 作者:可可西里 更新时间:2023-11-01 09:47:22 25 4
gpt4 key购买 nike

在 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个列表中编辑以回答第一条评论:文件名以循环方式分发并以空格分隔。

最佳答案

假设循环分布,您可以通过模数计算轻松获得列表编号。出于演示目的,我只输出没有 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%

示例输出

"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

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

关于Windows CMD 批处理 : concatenating variable NAME in a loop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42893802/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com