2

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

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 的完整目录,其中包含大约 6,000 张以这种方式命名的图片,一直到 Motorcycle-238-150.jpg

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

4

1 回答 1

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
于 2012-11-22T19:16:27.273 回答