使用批处理脚本重命名上个月的文件

时间:2018-08-02 20:51:46

标签: batch-file file-rename batch-rename

我想使用批处理脚本重命名上个月+本年的文件。请帮忙!

例如:重命名c:\ Example.txt Example_MMYY.txt

其中MM =上个月,YY =本年或Example_0718.txt

3 个答案:

答案 0 :(得分:1)

尝试一下:

 :prevmonthren
setlocal

::argument value
::set "file=%~f1"

::hardcoded value
set "file=testfile.txt"

for %%# in ("%file%") do (
    set "ext=%%~x#"
    set "nam=%%~n#"
)

for /f %%# in ('wMIC Path Win32_LocalTime Get /Format:value') do @for /f %%@ in ("%%#") do @set %%@


set /a prev_month=month-1
if %prev_month% lss 10 set "prev_month=0%prev_month%"
if %month%==1 (
    set "prev_month=12"
    set /a year=year-1
)
set year=%year:~2%
ren %file% %nam%_%prev_month%%year%%ext%


endlocal

您可以使用硬编码的值作为文件位置,也可以取消注释设置文件位置的第一行(并注释第二行)以使用命令行参数。

答案 1 :(得分:1)

此问题可以通过非常简单的方式解决:

@echo off
setlocal

for /F "tokens=1,3 delims=/" %%m in ("%date%") do (
   set /A "MM=1%%m-1, YY=%%n-!(MM-100), MM+=12*!(MM-100)"
)

ren Example.txt Example_%MM:~-2%%YY:~-2%.txt

此方法假定%date%变量的格式为MM/DD/YYYY。如果不是,只需在"tokens=1,3"选项中更改数字即可。

答案 2 :(得分:0)

如果您可以致电Powershell以获取日期,则可以简化代码。

for /f "usebackq" %%G in (`powershell "(Get-Date).AddMonths(-1).ToString('MMyy')"`) do set "mmyy=%%G"
rename Example.txt Example_%mmyy%.txt
相关问题