0

ファイルを含む特定のフォルダーを検索する必要があり*.txtますが、ファイルの名前には のような日付が含まれてい20120712ます20120713

特定の日付以降のファイルを検索して、別のフォルダに移動したいと考えています。バッチを使用して、特定の日付またはそれ以降の日付を含むファイル名を検索するにはどうすればよいですか?

4

1 に答える 1

1

次のようなものを試してください:

@echo off

setlocal

set SEARCH_DIR=c:\temp\source
set TARGET_DIR=c:\temp\target
set DATE_THRESHOLD=20120720

REM ***
REM *** NEED TO MODIFY REGEX ACCORDINGLY (THIS REGEX EXPECTS THE FILES TO BE CALLED YYYYMMDD.TXT).
REM ***
for /f %%F in ('dir /b %SEARCH_DIR%\*.txt 2^>nul ^| %SystemRoot%\System32\findstr.exe /r /c:"^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\.txt"') do (
    call :PROCESS_FILE "%%F"
    )

endlocal

goto END


:PROCESS_FILE

set PF_FILENAME=%1
set PF_FILENAME=%PF_FILENAME:"=%

REM ***
REM *** EXTRACT THE NUMERIC PART FROM THE FILENAME.  THIS WILL NEED MODIFYING IF YOUR FILENAME FORMAT IS NOT YYYYMMDD.TXT.
REM ***
set /a PF_YYYYMMDD=%PF_FILENAME:~0,8%

echo Processing file [%PF_FILENAME%]...

REM ***
REM *** CHECK DATE.
REM ***
if %PF_YYYYMMDD% LEQ %DATE_THRESHOLD% (
    echo File not old enough - skipping.
    goto END
    )

REM ***
REM *** MOVE FILE.
REM ***
echo Moving file....
move "%SEARCH_DIR%\%PF_FILENAME%" "%TARGET_DIR%"
if exist "%SEARCH_DIR%\%PF_FILENAME%" (
    echo ERROR : Failed to move file.
) else (
    echo File moved successfully.
)

goto END


:END
于 2012-07-27T21:55:43.433 に答える