将文件夹名称从 YYYYMMM 更改为 MMMM YYYY

Posted

技术标签:

【中文标题】将文件夹名称从 YYYYMMM 更改为 MMMM YYYY【英文标题】:Change folder name from YYYYMMM to MMMM YYYY 【发布时间】:2021-03-20 11:21:09 【问题描述】:

我需要一个可以将文件夹名称从 YYYYMMM 重命名为 MMMM YYYY 的批处理

例子:

2019JAN to January 2019
2019FEB to February 2019
etc...

我下面的批次只能从YYYYMMM 重命名为MMMYYYY。感谢有人可以帮助扩展我的代码并实现所需的输出。谢谢。

@echo off
setlocal enableDelayedExpansion
for /d %%F in (*) do (
  set "folder=%%F"
  echo ren !folder! "!folder:~-3!!folder:~0,4!"
)

【问题讨论】:

【参考方案1】:

文件夹重命名任务可以通过:

@echo off
setlocal EnableExtensions EnableDelayedExpansion
set "JAN=January"
set "FEB=February"
set "MAR=March"
set "APR=April"
set "MAY=May"
set "JUN=June"
set "JUL=July"
set "AUG=August"
set "SEP=September"
set "OCT=October"
set "NOV=November"
set "DEC=December"
for /D %%I in (20*) do (
    set "FolderName=%%I"
    call ren "%%I" "%%!FolderName:~4!%% !FolderName:~0,4!"
)
endlocal

yyyy-MM 格式的文件夹名称会更好,因为按名称排序的具有该名称的文件夹也按正确的时间顺序列出。

@echo off
setlocal EnableExtensions EnableDelayedExpansion
set "JAN=01"
set "FEB=02"
set "MAR=03"
set "APR=04"
set "MAY=05"
set "JUN=06"
set "JUL=07"
set "AUG=08"
set "SEP=09"
set "OCT=10"
set "NOV=11"
set "DEC=12"
for /D %%I in (20*) do (
    set "FolderName=%%I"
    call ren "%%I" "!FolderName:~0,4!-%%!FolderName:~4!%%"
)
endlocal

对于批处理文件文件夹中所有子文件夹的递归重命名,在文件夹名称中使用四位数字年份和三个字符缩写月份,应修改 FOR 循环到:

for /F "delims=" %%I in ('dir "%~dp020*" /AD /B /S 2^>nul ^| %SystemRoot%\System32\findstr.exe /I /R "\\20[0123456789][0123456789][ADFJMNOS][ACEOPU][BCGLNPRTVY]$"') do (
    set "FolderName=%%~nxI"
    call ren "%%I" "%%!FolderName:~4!%% !FolderName:~0,4!"
)

正则表达式不能完美避免误报匹配,即匹配的也可以是以20[0-9][0-9] 开头的文件夹,但接下来的三个字符不完全是十二个月的缩写之一。但在这种情况下,这应该不是问题。

要了解所使用的命令及其工作原理,请打开command prompt 窗口,在那里执行以下命令,并仔细阅读每个命令显示的所有帮助页面。

dir /? call /? echo /? endlocal /? findstr /? for /? ren /? set /? setlocal /?

【讨论】:

以上是关于将文件夹名称从 YYYYMMM 更改为 MMMM YYYY的主要内容,如果未能解决你的问题,请参考以下文章

将批处理脚本中的目录更改为没有名称的文件夹

jQuery UI datepicker:如何将下拉列表中的月份名称从短名称更改为长名称?

WordPress:如何将类别页面标题更改为仅类别名称?

将 App Store 中的应用名称更改为现在已删除的另一个应用的名称

如何在不使用库的情况下将默认名称“选择文件”更改为“选择文档”? [复制]

Webpack Module Federation 将共享库的名称更改为数字