批处理-循环文本文件[重复]

Posted

技术标签:

【中文标题】批处理-循环文本文件[重复]【英文标题】:Batch - Looping through text file [duplicate] 【发布时间】:2021-01-01 13:01:20 【问题描述】:

我正在尝试使用此命令在多个目录中查找 30 天之前的所有文件:

[Directory] && forfiles /d -30 /c "cmd /c echo @path"

输出是一个 .txt 文件。

文本文件包含目录的路径: C:\目录1 C:\目录2 C:\Directory3 等

我正在尝试使用文本文件遍历多个目录,但我需要提供 2 个命令: cd(更改到我需要信息的文件的目录)和获取信息的实际命令)

如果我创建一个手动输入目录名称的批处理文件,我会得到这样的结果:

cd "C:Directory1" && forfiles /d -30 /c "cmd /c echo @path"
cd "C:Directory2" && forfiles /d -30 /c "cmd /c echo @path"
cd "C:Directory3" && forfiles /d -30 /c "cmd /c echo @path"

如何在循环开始时输入“cd”命令,然后输入 txt 文件中的目录和命令的其余部分(forfiles /d -30 /c "cmd /c echo @path")

到目前为止我所拥有的是:

for /f "usebackq tokens=*" %%A in ("C:\list.txt") do forfiles /d -30 /c "cmd /c echo @path %%A

谢谢!

【问题讨论】:

为什么不将/P 选项与FORFILES 一起使用? 路径将在我试图循环的 txt 文件中逐行列出。如果所有路径都在 txt 文件中,我将如何给它 /P 选项中的路径? 您已经在ECHO 命令中使用它。 谢谢!这效果更好,但我没有得到我需要的文件的输出,那些超过 30 天的文件。我得到的输出是文本文件中的相同目录列表加上forfiles /p @path /d -30 /c "cmd /c echo @path 行。 谢谢@Squashman。这也有很大帮助! "%%~A" 修复了整个问题!!!一切正常,就像我手动命名目录名称时一样! 【参考方案1】:

带有/F 选项的FOR 命令用于读取文件,并将文件的每次迭代分配给变量%%A。因此,请将该变量与FORFILES 命令的/P 选项一起使用。

for /f "usebackq tokens=*" %%A in ("C:\list.txt") do forfiles /P "%%~A" /d -30 /c "cmd /c echo @path"

【讨论】:

以上是关于批处理-循环文本文件[重复]的主要内容,如果未能解决你的问题,请参考以下文章

文本处理工具之sed

循环批处理文件,用于将来自不同文件夹的多个文本文件合并到另一个不同文件夹中的一个文本文件

9 处理文本的工具sed

如何使用for循环将文本文件中的一行字符串作为Bash中另一个脚本的单独变量传递[重复]

12文本处理工具sed

文本三剑客之二:sed