按创建日期进行Windows批量重命名

时间:2015-04-11 01:50:05

标签: windows shell batch-file command-line-interface

可能有更好的方法,但我的文件名采用以下格式: name_Sat Apr 11 031806 2015.mp3(带空格)

为了合并它们,我需要将它们按顺序排列,即。 001,002,003等。

我目前使用此代码将它们移动到每天结尾的文件夹中:

@echo off

for /f "skip=1" %%x in ('wmic os get localdatetime') do if not defined MyDate set MyDate=%%x

:: variables

set SRCFOLDER=C:\srcfolder
set DESTFOLDER=C:\destfolder
set today=%MyDate:~0,4%-%MyDate:~4,2%-%MyDate:~6,2%
set backupcmd= /MOV

robocopy "%SRCFOLDER%" "%DESTFOLDER%\%today%" %backupcmd%

生成一个名为YYYY-MM-DD的新文件夹,文件放在那里。我将它们与另一个程序合并,但我需要在它们创建时将它们按顺序排列(文件名中的时间)。

所以问题是 - 我该怎么做?

由于

1 个答案:

答案 0 :(得分:1)

如果我理解正确,文件将根据脚本运行的日期移动到文件夹...而不是文件名中显示的日期。但是,您声明该文件夹中的文件都是在同一天创建的并且已经排序。尝试将此(未经测试)添加到当前脚本:

setlocal EnableDelayedExpansion
set /A Counter=0
REM Since you need folders numbered as 001, we need some padding
set /A PaddingNumber=1000
for /f "delims=" %%A in ('dir /b /a-d "%DESTFOLDER%\%today%\*"') do (
    set /A Counter=!Counter!+1
    set /A SequenceNumber=%PaddingNumber%+!Counter!
    set FileSuffix=!SequenceNumber:~1!
    ren "%%~fA" "%%~nA-!FileSuffix!%%~xA"
)

您可以选择是否在开始或结束时使用FileSuffix。