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
相关产品推荐
相关产品推荐

