How to rename files in folders to foldername using batch file

后端 未结 4 1356
别跟我提以往
别跟我提以往 2020-12-15 01:55


Could any of you help me with a problem I have with a lot of files with the same name, placed in sperate folders.
The folders are named with numbers, but the files

4条回答
  •  轮回少年
    2020-12-15 02:49

    @ECHO OFF
    SETLOCAL enabledelayedexpansion
    SET startfrom=c:\sourcedir
    SET destdir=c:\destdir
    FOR /f "delims=" %%i IN ('dir /s /b "%startfrom%\index.*"') DO (
     FOR %%e IN (jpg html pdf) DO IF /i .%%e==%%~xi (
      FOR %%d IN ("%%~dpi.") DO (
       SET "var=%%~nxd"
       IF "!var:~6!"=="" (
        SET "var="
        SET /a var=1%%~nxd 2>NUL
        IF DEFINED var IF !var! geq 1000000 IF !var! leq 1999999 (
         ECHO MOVE "%%i" "%destdir%\%%~nxd%%~xi"
        )
       )
      )
     )
    )
    
    • Get the 'index.*' files
    • filter on extensions specified
    • find the immediate directory name
    • check that it is not longer than 6 characters
    • attempt to set a variable to 1000000..1999999 if 6-digit name
    • if successful ECHO the move command (remove ECHO keyword to perform move)

    Annotated test structure:

    c:\sourcedir\index.pdf                not 6-digit dir
    c:\sourcedir\000000\index.jpg
    c:\sourcedir\000009\index.css         extension not specified
    c:\sourcedir\000009\index.html
    c:\sourcedir\000009\index.jpg
    c:\sourcedir\000009\index.pdf
    c:\sourcedir\000009\index.txt         extension not specified
    c:\sourcedir\010+39\index.txt         not 6-digit dir
    c:\sourcedir\12345\index.jpg          not 6-digit dir
    c:\sourcedir\1234567\index.jpg        not 6-digit dir
    c:\sourcedir\123x56\index.jpg
    c:\sourcedir\50000-0000\index.jpg     not 6-digit dir
    c:\sourcedir\5000000000\index.jpg     not 6-digit dir
    c:\sourcedir\999-99\index.jpg         not 6-digit dir
    c:\sourcedir\999999\index.jpg
    c:\sourcedir\a\index.jpg              not 6-digit dir
    c:\sourcedir\yellow\index.jpg         not 6-digit dir
    

    Results:

    MOVE "c:\sourcedir\000000\index.jpg" "c:\destdir\000000.jpg"
    MOVE "c:\sourcedir\000009\index.html" "c:\destdir\000009.html"
    MOVE "c:\sourcedir\000009\index.jpg" "c:\destdir\000009.jpg"
    MOVE "c:\sourcedir\000009\index.pdf" "c:\destdir\000009.pdf"
    MOVE "c:\sourcedir\999999\index.jpg" "c:\destdir\999999.jpg"
    

提交回复
热议问题