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

批处理FOR循环中文件修改时间变量无法正确更新问题

问题解决方法

你的问题出在两个核心点:批处理的变量扩展机制,以及set命令的语法错误。

修改后的代码

@echo off
setlocal enabledelayedexpansion

for /f %%a in ('dir /b .\*.*') do (
    echo a : %%a
    echo ta: %%~ta
    set filetime=%%~ta
    echo filetime: !filetime!
)
endlocal

关键修改说明

  • 开启延迟变量扩展:添加setlocal enabledelayedexpansion。批处理默认是即时变量扩展,循环内的%filetime%会在整个循环执行前就被替换成变量的初始旧值。开启延迟扩展后,用!filetime!可以在每次循环迭代时实时读取变量的当前值。
  • 修正set命令的空格:原代码set filetime = %%~ta中,等号两边的空格会被识别为变量名和值的一部分,实际定义的变量是filetime (带末尾空格),而你调用的是不带空格的%filetime%,自然读不到正确值。必须写成set filetime=%%~ta(等号两边无空格)。

修改后运行脚本,每个文件对应的filetime会正确显示该文件的实际修改时间。

内容的提问来源于stack exchange,提问作者Javier Perez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 20:12:49