Rename Multiple files with in Dos batch file

后端 未结 3 822
时光取名叫无心
时光取名叫无心 2020-12-18 06:04

I wish to rename all files inside the folder *.txt, so the result will be \"1.txt\", \"2.txt\" and \"3.txt\", ....

How can I do so?

相关标签:
3条回答
  • 2020-12-18 06:07

    I wish to rename all files inside the folder *.txt, so the result will be "1.txt", "2.txt" and "3.txt", ....

    How can I do so?

    ::Setup the stage...
    SETLOCAL ENABLEDELAYEDEXPANSION
    SET folder=C:\This\Is\The\Folder
    SET count=1
    
    ::Action
    CD "%folder%"
    FOR %%F IN ("*.txt") DO (
     MOVE "%%F" "!count!.txt"
     SET /a count=!count!+1
    )
    ENDLOCAL
    

    Shorthand

    SETLOCAL ENABLEDELAYEDEXPANSION
    SET count=1
    FOR %%F IN (C:\Path\To\File\*.txt) DO MOVE "%%~fF" "%%~dpF!count!.txt" & SET /a count=!count!+1
    ENDLOCAL
    

    So if your folder contained cat.txt, dog.txt, bird.txt, ninjaturtle.txt, it will output 1.txt, 2.txt, 3.txt, 4.txt.

    0 讨论(0)
  • 2020-12-18 06:10

    First make a directory listing:

    dir /b *.txt > myfile.cmd
    

    Then start up UltraEdit (http://www.ultraedit.com/) and open the file.

    Then go into column mode, select all lines, and:

    • insert "RENAME " in the beginning of every line
    • insert ".TXT" at the end of every line (be sure to put it far enough right in case you have very long lines)
    • insert a number (see Column / Insert Number in the menu) right before .TXT
    0 讨论(0)
  • 2020-12-18 06:27

    The following may accomplish what you are looking for. It uses a for loop to iterate through the text files and makes a "call" to another bit of the batch file to do the rename and increment of a variable.

    Edit Change math operation to cleaner solution suggested by Andriy.

    @echo off
    set i=1
    for %%f in (*.txt) do call :renameit "%%f"
    goto done
    
    :renameit
    ren %1 %i%.txt
    set /A i+=1
    
    :done
    
    0 讨论(0)
提交回复
热议问题