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

求助:修改Batch脚本实现每个文件独立随机日期(timestomper工具)

解决方法

你的脚本问题出在随机数生成代码放在了for循环外部,只执行了一次,所以所有文件共用同一组随机日期。要让每个文件都有独立的随机日期,需要把随机数生成逻辑移到for循环内部,每次遍历文件时重新生成新的随机值。

另外可以优化日期格式,给个位数的月/日/时/分补零,让格式更统一,符合你期望的示例样式。

修改后的脚本如下:

@echo off & setlocal EnableDelayedExpansion
:: 遍历所有jpg文件(递归子目录)
for /r %%v in (*.jpg) do (
    :: 每次循环生成新的随机日期时间
    Set /a _month=(!RANDOM!*12/32768)+1
    :: 根据月份生成合理天数,避免无效日期
    if !_month! equ 2 (
        Set /a _day=(!RANDOM!*28/32768)+1
    ) else if !_month! equ 4 if !_month! equ 6 if !_month! equ 9 if !_month! equ 11 (
        Set /a _day=(!RANDOM!*30/32768)+1
    ) else (
        Set /a _day=(!RANDOM!*31/32768)+1
    )
    Set /a _hours=(!RANDOM!*23/32768)
    Set /a _minutes=(!RANDOM!*59/32768)
    
    :: 给个位数补零,统一格式
    if !_month! lss 10 set "_month=0!_month!"
    if !_day! lss 10 set "_day=0!_day!"
    if !_hours! lss 10 set "_hours=0!_hours!"
    if !_minutes! lss 10 set "_minutes=0!_minutes!"
    
    :: 调用timestomper修改文件日期
    timestomper -z !_month!-!_day!-2022 !_hours!:!_minutes!:01 -p "%%v"
)

修改说明

  1. 随机数移至循环内:把生成_month、_day、_hours、_minutes的代码放到for循环内部,确保每个文件都触发一次随机生成。
  2. 延迟扩展变量:循环内部用!变量!而非%变量%,保证能实时读取变量的最新值。
  3. 日期合法性优化:针对不同月份设置合理的天数范围,避免生成类似2月30日这种无效日期。
  4. 补零处理:给个位数的月、日、时、分添加前导零,让日期格式和你期望的示例一致。
  5. 时间范围优化:小时改为0-23,分钟改为0-59,符合标准时间格式。

如果需要调整年份范围,比如不是固定2022,可添加随机年份生成逻辑,例如:

Set /a _year=(!RANDOM!*20/32768)+2003

这样会生成2003-2022之间的随机年份,替换脚本中的2022即可。

内容的提问来源于stack exchange,提问作者François Gillot

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 22:24:21