根据我的循环,用于遍历目录结构的程序或脚本

根据我的循环,用于遍历目录结构的程序或脚本

我有以下循环并希望获得一些帮助来扩展其功能。

for /D %d in (*.*) do "c:\Program Files (x86)\7-Zip\7z.exe" a -tzip "%d.zip" ".\%d\*"

目前,目录结构如下:

日志文件 > 年 > 月 > 日 > 小时

我手动导航到目录,在 Windows 命令行中执行我的“for”循环,然后我的循环创建每个“小时' 所选目录下的。然后我手动导航到下一个,然后重复,直到我拉上整个

环境是 Server 2003,我只能使用命令提示符(没有 PowerShell 或安装范围)并且不能使用第三方“解决方案”。

问题 1:我可以在月度甚至年度级别实现自动化吗?保留每小时压缩,因为这就是重点……?

问题2:我目前手动将压缩的每小时文件迁移到冷存储 - 目标处的目录结构与源处的目录结构略有不同。 有没有可能实现自动化?

提前感谢您的建议

答案1

问题 1:我可以在月度甚至年度级别实现自动化吗?

保留每小时的压缩,因为这就是重点……?

实现自动化的方法是使用嵌套for循环。

以下解决方案适用于月份级别。使用相同方法,再增加一层嵌套,即可获得年份级别的解决方案。

在您选择的 Month 文件夹中运行以下批处理文件 (RecurseDays.cmd):

@echo off
rem start in a month folder and loop through the days
for /d /r %%d in (*) do (
  rem for each day, change directory to the day
  pushd %%d
  rem loop through the hours
  for /d %%h in (*) do (
    rem zip the hour
    echo "c:\Program Files (x86)\7-Zip\7z.exe" a -tzip "%%h.zip" ".\%%h\*"
    )
  rem done with the day, change directory back to the month
  popd
  )

笔记:

  • 当您对批处理文件符合预期感到满意时,请echo从命令中删除。7z

Q2:我目前手动将压缩的每小时文件迁移到冷存储

目标位置的目录结构与源位置的目录结构略有不同。是否有范围可以实现自动化?

您可以使用robocopy。正确的位置应该是在以下位置之后:

  rem done with the day, change directory back to the month

在这里,您可以迁移您所在月份的所有天数的所有小时文件。robocopy将保留目录结构,并且如果您愿意,它还可以选择移动 zip 文件(而不仅仅是复制它们)。

请参阅下面的链接以了解更多信息。

进一步阅读

  • Windows CMD 命令行的 AZ 索引- 与 Windows cmd 行相关的所有事物的绝佳参考。
  • 对于/d- 有条件地对多个目录/文件夹执行命令。
  • - 更改当前目录/文件夹并存储前一个文件夹/路径以供 POPD 命令使用。
  • 弹出- 将目录更改回 PUSHD 命令最近存储的路径/文件夹。
  • 机器人复制- 强大的文件和文件夹复制。

相关内容