2

ハイフンで区切られた 3 つの部分に分割された名前のファイルがあります。

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

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

ファイル名の最初の部分は、オートバイの写真であるコンテクストを示します。2 番目の部分はシリーズで、3 番目の部分はシリーズ内の個々の写真です。

私は、Motorcycles という名前のディレクトリ全体を持っており、このように名前が付けられた 6,000 枚ほどの写真が、Motorcycle-238-150.jpg まで続いています。

私の質問は、シリーズ番号またはファイルの 2 番目の部分を使用してこれらのファイルを並べ替えるために使用できるバッチ ファイルまたはスクリプトがあるかどうかです。オートバイのディレクトリ内のすべてのファイルを、オートバイのディレクトリ内のサブディレクトリに移動したいと考えています。たとえば、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 に答える