嵌套 Batch For Do 循环以使用文件夹名称和文件名

Posted

技术标签:

【中文标题】嵌套 Batch For Do 循环以使用文件夹名称和文件名【英文标题】:Nesting Batch For Do loops to work with folder name and filename 【发布时间】:2021-01-22 04:51:25 【问题描述】:

我想在循环中递归执行一个命令,根据树结构中文件的文件夹名称(即日期)在文件上设置元数据标记。 基本上是这样的

FOR /R [folder] %%G in (*.mts) DO Exiftool -DateCreated=[folder name of]%%G %%G

但是,我没有办法提取参数的文件夹名称 - %%~pG 会给我整个路径 - 包括斜杠

因此我想到了这样的嵌套循环:

FOR /d /r  %%G IN (.) DO (
     FOR %%H IN (*.mts)  DO (
           echo %%~nG %%~nH
     )     
)

%%~nG 将报告文件夹名称,但 %%H 不可用 - 输出如下所示: (FOR %H IN (*.mts) DO (echo 2017-11-12 %~nH ) ) 也许第二个 for 循环不知道从哪里开始 - 我该如何告诉它?

【问题讨论】:

for /R [folder] %%G in (*.mts) do for %%H in ("%%~pG.") do echo File: "%%~nxG"; Parent: "%%~nxH" 【参考方案1】:
 FOR %%H IN (*.mts)  DO (

将在当前目录中查找.mts 文件。

你想查看当前的%%G目录,所以使用

 FOR %%H IN ("%%G\*.mts")  DO (

【讨论】:

谢谢! - 正是我需要的。

以上是关于嵌套 Batch For Do 循环以使用文件夹名称和文件名的主要内容,如果未能解决你的问题,请参考以下文章

循环嵌套

if语句,for循环,while循环,do while循环,无限循环,循环嵌套

循环结构的问题

第五节课

for语句,嵌套循环

CMD/Batch 从变量中提取每个文本文件行并循环