You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将归档文件夹的修改日期添加到RAR压缩包文件名中?

解决WinRAR压缩时嵌入文件夹修改日期到文件名的问题

我来帮你搞定这个需求——你需要把目标文件夹的原始修改日期(而非当前系统时间)以YYYYMMDD格式嵌入压缩包文件名,而WinRAR自带的-ag参数默认用的是当前时间,所以得换个思路:先提取文件夹的修改日期并格式化,再传给压缩命令。

直接在命令提示符执行的单行命令

你可以在CMD窗口直接运行这条命令,一步到位生成带文件夹修改日期的压缩包:

for %I in ("d:\doc\aatmp") do @(set "folder_dt=%~tI" && winrar a -r kk_%folder_dt:~0,4%%folder_dt:~5,2%%folder_dt:~8,2%.rar "%I")

命令拆解:

  • for %I in ("d:\doc\aatmp"):定位到你要压缩的目标文件夹,把路径暂存到%I变量中
  • set "folder_dt=%~tI":提取文件夹的修改时间(就是你之前用echo %~tI得到的2014-06-01 22:12格式),赋值给folder_dt变量
  • %folder_dt:~0,4%:截取变量前4位(年份),%folder_dt:~5,2%截取第6-7位(月份),%folder_dt:~8,2%截取第9-10位(日期),三者拼接就是你要的YYYYMMDD格式
  • winrar a -r kk_...rar "%I":执行压缩命令,-a表示添加文件到压缩包,-r表示递归压缩子文件夹,最终生成的文件名类似kk_20140601.rar

如果需要写成批处理文件(.bat)

如果要把这个逻辑保存成批处理重复使用,需要做一点小调整(批处理里变量规则不同):

@echo off
setlocal enabledelayedexpansion
for %%I in ("d:\doc\aatmp") do (
    set "folder_dt=%%~tI"
    winrar a -r kk_!folder_dt:~0,4!!folder_dt:~5,2!!folder_dt:~8,2!.rar "%%I"
)
endlocal

批处理差异说明:

  • 批处理中for循环变量要写成%%I(而非命令行的%I)
  • 开启enabledelayedexpansion延迟扩展,并用!代替%引用变量(!folder_dt:...!),确保命令块内变量能正确实时更新

这样就能完美实现你要的效果:压缩包文件名里的日期是目标文件夹的原始修改日期,而非压缩操作的当前时间。

内容的提问来源于stack exchange,提问作者Tangent Lin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:39:51