如何使用 windows 批处理循环和关联多个不均匀数据集

How to loop and associate multiple uneven datasets using windows batch

编辑 2.

我很难在 windows 批处理中绕过循环。

我有数据集,我正在尝试与每个数据集建立一对一关系。但是,它们不是相等的数据集。

伪代码为:

dataset1 \folder\pictures(10 个随机名称的 jpg)

dataset2 db.csv(单列中有 100 个条目)

遍历db.csv,读取第一个条目并将其与第一张图片相关联。第11条,再次从第一张图片开始,以此类推(当然更稳健,因为数据集不是固定数量)

for /F "delims=" %%A in (db.csv) do (
    ren random.jpg pic1-%%a
    ren randomanother.jpg pic2-%%a (2nd entry db.csv)
    ...
    ren random.jpg pic11-%%a (11th entry in db.csv)
    ren randomanother.jpg pic12-%%a (12th entry in db.csv)
    
    etc
    
)

我不打算使用 ren 命令,它只是迭代如何工作的一个示例。在循环中,csv继续读取数据,但再次将其应用于第一个图片文件。

这是我没有成功的循环逻辑。

我怀疑我可能需要计算数据集或至少计算图片数据集来迭代循环?图片最初没有按顺序编号,但我可以很容易地将它们重命名为。

构建 jpg 文件的(伪)数组以便于处理(因此您可以保留随机名称而不是连续重命名)。

使用计数器跟踪要处理的行和文件。
使用模运算符将计数器 pic 转换为 [0...count] 范围。遍历数据库文件并根据需要使用计数器 pic 和模数。

第一部分只是创建一个测试环境,你不需要它,因为你已经有了环境。

@echo off
setlocal enabledelayedexpansion
REM create test environment
for %%a in (Alpha Beta Gamma Delta Epsilon Zeta Eta Theta Iota Kappa) do break>"%%a.jpg"
>db.csv (for /l %%a in (1,1,100) do @echo !random!)
REM end of creating environment

@echo off
setlocal enabledelayedexpansion
REM enumerate jpg files
set "count=0"
for %%a in (*.jpg) do (    REM enumerating in alphabetical order
  set "file!count!=%%a"
  set /a count+=1
)

REM associate files
set "pic=0"
for /f %%a in (db.csv) do (
  set /a "n=pic %% count"
  set /a "pic+=1"
  call echo copy "%%file!n!%%" "pic!pic!-%%a.jpg"
  REM or whatever you really want to do with it...
)