【问题标题】:How to loop and associate multiple uneven datasets using windows batch如何使用 Windows 批处理循环和关联多个不均匀的数据集
【发布时间】:2022-02-02 18:34:49
【问题描述】:

编辑 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 继续读取数据,但再次将其应用于第一个图片文件。

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

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

【问题讨论】:

  • 更多信息将有助于回答问题并防止其被关闭。 dataset1dataset2 的内容是什么样的?它们都是 CSV 文件吗?任一 CSV 文件中是否有多个字段?一旦pic1 被重命名,您希望如何再次重命名它?
  • 您没有显示 jpg 文件示例。我假设它们是pic1pic2 等等,还是假设它们是随机名称?我怎么知道哪个随机文件应该是pic1?等等。
  • @Gerhard 已编辑。它执行的命令对我来说不如循环的逻辑重要。

标签: windows for-loop batch-file cmd


【解决方案1】:

构建 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...
)

【讨论】:

  • 完美运行,谢谢。真的从中学到了,欣赏解决方案的优雅。
  • @SP 请accept 将问题从“未回答”队列中删除(除非您希望得到更好的答案)
猜你喜欢
  • 2017-06-27
  • 2018-06-11
  • 1970-01-01
  • 2018-11-14
  • 2011-01-16
  • 2017-03-25
  • 1970-01-01
  • 2023-03-23
  • 2010-11-24
相关资源
最近更新 更多