Search code examples
batch-filefindstr

How do I use For /F in a batch file to find file types


I have a batch file which uses a For /F loop to find all files with a specific (cadence backup uses <filename.ext,1> for backup) setup.

For /F "delims=" %%A in ( 'Dir /B/S "*,*" ^| findstr ",[0-9][0-9]*$" ' ) Do Del "%%A"

and this works for this special setup (This is a special search for an unusual file name format of ABCDE.ZYX,1).

How do I reuse the findstr to find all .bak files as a second search string?

Separate question:

How does this line ( 'Dir /B/S "*,*" ^| findstr ",[0-9][0-9]*$" ' ) work? What is it doing? Please explain the functions and attributes.


Solution

  • My Working Solution. Thanks to those who explained the functions involved.

    @ECHO off
    set cadencedeleted=0
    set autodeleted=0
    set altiumdeleted=0
    
    ECHO Cadence Back-up Deletion In Progress
    For /F "delims=" %%A in ( 'Dir /B/S "*,*" ^| findstr ",[0-9][0-9]*$" ' ) Do (
        Del "%%A"
        set cadencedeleted=1
    )
    
    ECHO AutoCAD Back-up Deletion In Progress
    For /F "delims=" %%A in ( 'Dir /B/S "*.bak" 2^>nul ' ) Do (
        Del "%%A"
        set autodeleted=1
    )
    ECHO Altium Back-up Deletion In Progress
    ECHO Note Altium *.pcbdoc.zip, *.schdoc.zip, *.outjob.zip, *.log,
    ECHO *.prjpcb.zip, *.schlib.zip, *.pcblib.zip are the only ones deleted
    
    For /F "delims=" %%A in ( 'Dir /B/S "*.pcbdoc.zip" 2^>nul ' ) Do (
        Del "%%A"
        set altiumdeleted=1
    )
    
    For /F "delims=" %%A in ( 'Dir /B/S "*.SchDoc.zip" 2^>nul ' ) Do (
        Del "%%A"
        set altiumdeleted=1
    )
    
    For /F "delims=" %%A in ( 'Dir /B/S "*.OutJob.zip" 2^>nul ' ) Do (
        Del "%%A"
        set altiumdeleted=1
    )
    
    For /F "delims=" %%A in ( 'Dir /B/S "*.log" 2^>nul ' ) Do (
        Del "%%A"
        set altiumdeleted=1
    )
    
    For /F "delims=" %%A in ( 'Dir /B/S "*.PcbLib.zip" 2^>nul ' ) Do (
        Del "%%A"
        set altiumdeleted=1
    )
    
    For /F "delims=" %%A in ( 'Dir /B/S "*.SchLib.zip" 2^>nul ' ) Do (
        Del "%%A"
        set altiumdeleted=1
    )
    
    For /F "delims=" %%A in ( 'Dir /B/S "*.prjpcb.zip" 2^>nul ' ) Do (
        Del "%%A"
        set altiumdeleted=1
    )
    ECHO Deletion checks
    
    IF %cadencedeleted%==1 (
        ECHO Cadence backup files deleted
    ) ELSE (
        ECHO Cadence backup files not found
    )
    
    IF %autodeleted%==1 (
        ECHO AutoCAD backup files deleted
    ) ELSE (
        ECHO AutoCAD backup files not found
    )
    
    IF %altiumdeleted%==1 (
        ECHO Altium Backup files deleted
    ) ELSE (
        ECHO Altium Backup files not found
    )
    
    ECHO on
    TIMEOUT 5