Search code examples
batch-filesearchcopycriteria

Batch Script to copy files from set locations


I am trying to get this bat file to copy file based on certain criteria.

What am I missing to get this to work?

@echo off
SETLOCAL ENABLEEXTENSIONS
SETLOCAL ENABLEDELAYEDEXPANSION

set "PATTERN=*.nwd"
set "SOURCE=C:\NWD\"
set "TARGET=C:\NWM\"
set "STRING1=191058"

pushd "%SOURCE%" && (
    for /F "delims=" %%F in ('findstr /S /M /I /R /C:"\<%STRING1%\>" "%PATTERN%"') do (
            ECHO copy "%%F" "%TARGET%"\"%%~nxE"
        )
    )
    popd
)

endlocal
exit /B

Solution

  • To fix your code you can do this:

    @echo off
    SETLOCAL ENABLEEXTENSIONS
    SETLOCAL ENABLEDELAYEDEXPANSION
    
    set "PATTERN=*.nwd"
    set "SOURCE=C:\NWD\"
    set "TARGET=C:\NWM\"
    set "STRING1=191058"
    
    pushd "%SOURCE%" && (
        for /F "delims=" %%F in ('findstr /S /M /I /R /C:"\<%STRING1%\>" "%PATTERN%"') do (
            ECHO copy "%%F" "%TARGET%%%~nxF"
        )
    )
    popd
    
    endlocal
    exit /B
    

    I'd change it to this though:

    @Echo Off
    
    Set "PATTERN=*.nwd"
    Set "SOURCE=C:\NWD"
    Set "TARGET=C:\NWM"
    Set "STRING1=191058"
    
    CD /D "%SOURCE%" 2>Nul || Exit /B
    
    For /F "Delims=" %%A In ('FindStr /SM "\<%STRING1%\>" "%PATTERN%"') Do (
        Echo Copy /Y "%%A" "%TARGET%\%%~nxA")
    

    You may wish to add a pause in order to see the Echo before the script closes