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

Win11 Pro下批处理脚本修改文件夹名称失败问题求助

Win11 Pro下批处理脚本修改文件夹名称失败问题求助

嗨,我来帮你排查这个问题!

首先看你遇到的情况:原本在Win7/10正常运行的重命名脚本,到Win11里生成了带斜杠的非法文件名5/23-e -05,导致系统报错“找不到指定路径”——这核心原因是Win11的区域设置里,%date%变量的显示格式和之前的系统不一样了,你用固定位置截取字符串的方式完全依赖当前系统的日期显示格式,一旦格式改变,截取出来的内容就会混乱,还出现了文件名不允许的/字符,自然重命名失败。

问题复现与原因分析

你的原脚本通过截取%date%的固定位置拼接日期:

setlocal enableextensions
set name=%date:~-4,4%-%date:~-10,2%-%date:~7,2%
Rename "Today" "%name%"

但在Win11里,你的%date%输出可能是类似周三 05/23/2024这样的格式(不同区域会有差异),按原来的位置截取,就会把斜杠、星期文字都截进来,生成了非法的文件名,最终导致重命名失败。

可靠的解决方案

要避开%date%的区域依赖问题,推荐两种更稳定的方式获取标准YYYY-MM-DD格式的日期:

方案1:使用WMIC命令(纯批处理,兼容性好)

@echo off
setlocal enableextensions enabledelayedexpansion

:: 用WMIC获取标准格式的日期
for /f "skip=1 tokens=1-3 delims=-" %%a in ('wmic os get localdatetime') do (
    if not defined name set name=%%a-%%b-%%c
)
:: 只取前10位(YYYY-MM-DD)
set name=!name:~0,10!

Rename "Today" "%name%"
endlocal

方案2:调用PowerShell(Win10/11原生支持,更简洁)

@echo off
setlocal enableextensions

:: 用PowerShell获取标准日期格式
for /f %%a in ('powershell -Command "(Get-Date).ToString('yyyy-MM-dd')"') do set name=%%a

Rename "Today" "%name%"
endlocal

这两种方式都不依赖系统的区域日期格式,能稳定生成合法的YYYY-MM-DD格式文件名,在Win11里就能正常完成重命名操作了。

备注:内容来源于stack exchange,提问作者Pat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 13:54:32