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