Search code examples
windows-7batch-filefilenamesdirectory

Batch script to create folders based on filenames


I have a folder with a lot of PNG images that I want to create folders for based on their filenames. I would then want the files to be moved into their respective folders of the same name and renamed to 0000.png.

Example:

- abcd.png
- efghi.png
- jklm.png
- nopqr.png
- stuv.png
- wxyz.png

To:

- abcd/0000.png
- efghi/0000.png
- jklm/0000.png
- nopqr/0000.png
- stuv/0000.png
- wxyz/0000.png

Solution

  • from the command line

    for /f %f in ('dir *.png /b') do md %~nf & move %f .\%~nf\0000.png
    

    if in the batch file

    for /f %%f in ('dir *.png /b') do md %%~nf & move %f .\%%~nf\0000.png
    

    Here is the example

    c:\Temp\pp>dir /s/b
    c:\Temp\pp\b.png
    c:\Temp\pp\p.png
    
    c:\Temp\pp>for /f %f in ('dir *.png /b') do md %~nf & move %f .\%~nf\0000.png
    
    c:\Temp\pp>md b   & move b.png .\b\0000.png
            1 file(s) moved.
    
    c:\Temp\pp>md p   & move p.png .\p\0000.png
            1 file(s) moved.
    
    c:\Temp\pp>dir /s/b
    c:\Temp\pp\b
    c:\Temp\pp\p
    c:\Temp\pp\b\0000.png
    c:\Temp\pp\p\0000.png