【问题标题】:Move files to folder by date in a batch script在批处理脚本中按日期将文件移动到文件夹
【发布时间】:2012-10-19 14:01:09
【问题描述】:

目前我有一个 7ZIP 命令批处理文件,该文件在今天的日期之前在子目录中压缩文件,并使用该日期创建一个 zip 文件。

"c:\Program Files\7-Zip\7z.exe" a x:\Logs\HS\%date:~10,4%%date:~4,2%%date:~7,2%\%date:~10,4%%date:~4,2%%date:~7,2%_HS.zip X:\Logs\HS\%date:~10,4%%date:~4,2%%date:~7,2%* -xr!*.zip

每个月的每一天都这样做

c:\20121018\20121018.zip
c:\20121019\20121019.zip

基本上我在同一个目录结构中也有一个 MONTH 文件夹。 201210. 基本上我需要的是将带有今天日期的 zip 文件移动到其相应月份文件夹的任务。今后每个月都会如此。

任何指导将不胜感激。

【问题讨论】:

  • Robocopy 或许可以做到。它包含在 Vista 及更高版本中,可用于 XP。
  • 你尝试过什么?你有什么问题?

标签: windows batch-file copy


【解决方案1】:

基本上你只需要

  1. 对于每个文件,从其名称中提取月份和年份部分
  2. 如果月份目录不存在,则创建它
  3. 将压缩包移动到月份目录中

试试这个代码让你开始......

for %%a in (*.zip) do (
  set fn=%%a
  set year=!fn:~0,4!
  set month=!fn:~4,2!
  if not exist !year!!month!\nul echo md !year!!month!
  echo move "%%a" "!year!!month!\%%a"
)

测试一下,去掉 echo 命令,再测试一次……

【讨论】:

  • 我删除了回声,但它没有按预期工作。它实际上创建了一个文件夹“!年!月!”在同一个 DAY 目录中并将文件移动到那里 (X:\LOGS\HS\20121019\!year!!month!) 而不是向上移动一个目录并将其移动到月份文件夹中
  • 为什么在测试之前删除了 echo?代码只是一个示例,你需要准备一点..并启用延迟扩展
猜你喜欢
  • 1970-01-01
  • 2021-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多