【发布时间】:2012-01-20 23:18:36
【问题描述】:
我想编写一个 Windows 批处理文件脚本,它将遍历 FILE PATHS 的文本文件,使用每个文件路径中的数据做一些工作,然后最终删除该文件。
我首先运行 FORFILES 命令并发送其输出(@PATH 参数是它匹配的任何文件的完整路径)到一个文本文件 (results.txt)。
我最终得到一个如下的 results.txt 文件:
"C:/Windows/Dir1/fileA.log"
"C:/Windows/Dir1/fileA.log"
"C:/Windows/Dir2/fileC.log"
"C:/Windows/Dir3/fileB.log"
我想做的是:
- 使用 FOR 循环并读取 results.txt 文件中的每一行
- 对于每一行(文件路径),去掉日志文件所在的目录名称(即:Dir1、Dir2 等)并在不同的位置创建一个具有相同名称的目录(即 D :/Archive/Backups/Dir1、D:/Archive/Backups/Dir2 等)——假设目录不存在。
- 将实际的 .log 文件移动到该目录中的一个 zip 文件中 [我有执行此操作的代码]。
- 从原始位置删除 .log 文件。 [非常简单]
我无法找出完成前 2 个步骤的最佳方法。读完第一行后,我的 FOR 循环似乎停止了:
FOR /F "tokens=1,2,3,4,5,6,7,8,9,10 delims=\" %%G in ("results.txt") DO (
...
)
【问题讨论】:
标签: windows shell batch-file