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

批处理脚本修改需求:调整文件时间与名称输出格式

批处理脚本修改与优化方案

修改后的批处理脚本

针对你的需求,我调整了脚本,改用wmic获取标准化的文件时间戳,避免系统区域设置导致的格式问题,同时输出你需要的4个时间列:

@echo off
setlocal enabledelayedexpansion

:: 先写入CSV表头
echo "创建时间 HH:MM","创建日期 YYYY-MM-DD","最后修改时间 HH:MM","修改日期 YYYY-MM-DD","文件名","扩展名">>"D:\test.csv"

:: 遍历D:\Share下所有非目录、非隐藏的文件
for /f "tokens=*" %%f in ('dir "D:\Share" /a-d-h /b /s') do (
    :: 把路径里的反斜杠换成双反斜杠,适配wmic的语法要求
    set "file_path=%%f"
    set "file_path=!file_path:\=\\!"
    
    :: 用wmic获取文件的创建时间和最后修改时间
    for /f "tokens=2 delims==" %%a in ('wmic path file where "name='!file_path!'" get creationdate /value ^| find "="') do set "create_time_raw=%%a"
    for /f "tokens=2 delims==" %%b in ('wmic path file where "name='!file_path!'" get lastmodified /value ^| find "="') do set "modify_time_raw=%%b"
    
    :: 拆分创建时间的日期和时间部分,转成YYYY-MM-DD和HH:MM格式
    set "create_date=!create_time_raw:~0,4!-!create_time_raw:~4,2!-!create_time_raw:~6,2!"
    set "create_hhmm=!create_time_raw:~8,2!:!create_time_raw:~10,2!"
    
    :: 拆分修改时间的日期和时间部分,转成目标格式
    set "modify_date=!modify_time_raw:~0,4!-!modify_time_raw:~4,2!-!modify_time_raw:~6,2!"
    set "modify_hhmm=!modify_time_raw:~8,2!:!modify_time_raw:~10,2!"
    
    :: 把结果写入CSV,用引号包裹避免逗号干扰
    echo "!create_hhmm!","!create_date!","!modify_hhmm!","!modify_date!","%%~nf","%%~xf">>"D:\test.csv"
)
endlocal

关键说明

  • 启用enabledelayedexpansion:循环里修改变量后,能立即获取更新后的值,避免变量值不更新的问题
  • wmic获取的时间格式是YYYYMMDDHHMMSS.ffffff+OOO,直接截取字符串就能得到我们需要的日期和时间,不受系统日期格式影响
  • 提前写入表头,让CSV结构更清晰

更优实现:PowerShell脚本

批处理处理文件属性和日期格式天生繁琐,PowerShell在这类场景下更高效可靠,代码也更简洁:

# 遍历指定路径下的所有非隐藏文件(递归子目录)
Get-ChildItem -Path "D:\Share" -File -Recurse -Hidden:$false | 
    # 自定义输出列,直接格式化日期时间为目标格式
    Select-Object @{Name='创建时间 HH:MM'; Expression={$_.CreationTime.ToString('HH:mm')}},
                  @{Name='创建日期 YYYY-MM-DD'; Expression={$_.CreationTime.ToString('yyyy-MM-dd')}},
                  @{Name='最后修改时间 HH:MM'; Expression={$_.LastWriteTime.ToString('HH:mm')}},
                  @{Name='修改日期 YYYY-MM-DD'; Expression={$_.LastWriteTime.ToString('yyyy-MM-dd')}},
                  @{Name='文件名'; Expression={$_.BaseName}},
                  @{Name='扩展名'; Expression={$_.Extension}} |
    # 导出为CSV,自动处理格式和编码问题
    Export-Csv -Path "D:\test.csv" -Encoding UTF8 -NoTypeInformation

优势

  • 语法更直观,参数清晰,不用处理复杂的字符串截取和变量转义
  • 自动处理CSV格式,比如文件名含逗号时会自动用引号包裹,避免格式错误
  • 支持UTF8编码,解决中文文件名乱码问题
  • 无需依赖外部命令,PowerShell是Windows系统自带的工具

内容的提问来源于stack exchange,提问作者Rolle W

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 16:54:54