Windows按创建日期批量重命名

Windows按创建日期批量重命名,windows,shell,batch-file,command-line-interface,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 SRCFO

可能有更好的方法,但我的文件名采用以下格式:
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
的新文件夹,并将文件放在那里。我会将它们与另一个程序合并,但我需要在创建它们时(文件名中的时间)将它们按顺序排列

所以问题是——我该怎么做


谢谢

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

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"
)

您可以选择将文件uffix放在开头还是结尾。

按文件名中的日期排序是相当困难的,尤其是对于这种奇怪的格式。但是你可以很容易地按时间顺序排列你的文件<代码>目录/od按修改日期/时间排序。告诉我们,这对您来说是否是一个可靠的选项。我发现copy/b以正确的顺序将mp3文件合并到一个工作文件中。因为它们都是在同一天创建的,所以时间从00开始到24,并且它们已经按应有的顺序进行了排序。