查找脚本或批处理文件,以根据部分文件名将主目录中的图片分类到各自的子目录中

时间:2012-11-22 18:36:01

标签: windows batch-file rename

我有这样命名的文件,分为三个部分,用连字符分隔。

Motorcycle-001-01.jpg
Motorcycle-001-02.jpg
Motorcycle-001-03.jpg

Motorcycle-002-01.jpg
Motorcycle-002-02.jpg
Motorcycle-002-03.jpg

文件名的第一部分表示竞赛,即摩托车的图片。第二部分是系列,而第三部分是系列中的单个图片。

我有一个名为Motorcycles的完整目录,其中有6000张左右的图片以这种方式命名,一直到Motorcycle-238-150.jpg

我的问题是,是否有批处理文件或脚本可用于使用序列号或文件的第二部分对这些文件进行排序。我想将我的摩托车目录中的所有文件移动到摩托车目录中的子目录中。例如,我想将Motorcycle-001-01.jpg通过Motorcycle-001-150.jpg移动到目录001.然后Motorcycle-002-01.jpg到Motorcycle-002-135.jpg进入目录002并且等等。

1 个答案:

答案 0 :(得分:0)

@Echo OFF

   :: By Elektro H@cker

REM Series:
REM If you type "1"   it's equals to serie "001"
REM If you type "10"  it's equals to serie "010"
REM If you type "100" it's equals to serie "100"
REM You can change that at the pattern multi-comparisions

:: Introduces a number of serie...
:SELECT
Set /P "Serie=Select the serie to move >>"

:: Basic error handling
Echo "%SERIE%" | FINDSTR /I "[a-z]" 1>NUL && (
    Echo [-] Type only nums...
    Set "Serie="
    GOTO:SELECT
)

:: Set the correct pattern for selected serie
IF %SERIE% LEQ 999 IF %SERIE% GTR 99 (Set "PATTERN=%SERIE%")
IF %SERIE% LEQ 99  IF %SERIE% GTR 9  (Set "PATTERN=0%SERIE%")
IF %SERIE% LSS 999 IF %SERIE% LSS 99 IF %SERIE% LEQ 9 (Set "PATTERN=00%SERIE%")

:: Makes the serie directory
MKDIR ".\%PATTERN%\" 2>NUL

:: Move all the files of the serie to the folder
For /F "Tokens=*" %%@ in ('DIR /B "Motorcycle-%PATTERN%*"') do (
    Move "%%@" ".\%PATTERN%\" >NUL
    Echo [+] Moved: %%@
)

Pause&Exit