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

Win10新版运行文件修改日期对比批处理脚本闪退问题排查

故障原因

不需要安装任何额外软件即可运行批处理脚本,故障根源如下:

  • 原脚本的文件新旧判断逻辑,完全依赖xcopy命令输出中包含File关键字的文本行提取判断值。微软在Windows 10 1803(内部版本10.0.17134)中调整了xcopy命令的提示输出措辞,原有匹配规则失效,for /f循环无法捕获到有效值,导致_Newer变量始终为空。
  • 后续执行If %_Newer%==1判断时,空变量会让命令直接变成If ==1,触发cmd语法错误,脚本会立即终止运行,表现为窗口闪现后关闭。
  • 这类依赖命令行工具输出文本做判断的写法本身兼容性极差,除系统版本更新会导致失效外,切换系统显示语言也会直接让脚本崩溃。
修复后的脚本

直接使用cmd原生的文件修改时间属性对比即可,不依赖任何外部命令的输出文本,兼容全版本Windows系统:

@echo off
setlocal
:: 定义两个待对比的文件路径
Set "_File1=D:\Steam\steamapps\common\dota 2 beta\game\dota\bin\win64\client.dll"
Set "_File2=D:\Programs\client.dll"

:: 先校验文件是否存在
if not exist "%_File1%" (
    echo 错误:未找到文件 %_File1%
    pause
    exit /b 1
)
if not exist "%_File2%" (
    echo 错误:未找到文件 %_File2%
    pause
    exit /b 1
)

:: 提取两个文件的修改时间戳
for %%a in ("%_File1%") do set "_Time1=%%~ta"
for %%a in ("%_File2%") do set "_Time2=%%~ta"

:: 对比时间戳,时间字符串靠后代表文件更新
if "%_Time1%" gtr "%_Time2%" (
    set "_Newer=%_File1%"
) else (
    set "_Newer=%_File2%"
)

echo The newest file is %_Newer%
Pause
endlocal

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 20:39:20