0

特定の日付以降に作成または変更されたディレクトリ構造全体のすべてのファイルを取得しようとしています。

for /f "usebackq tokens=1-7* delims=/: " %I in (`dir/tc/o-d/s gstmp\*yell*.tif ^
     ^| findstr 2010`) do  (
        if "%K%I%J %N %L%M" GEQ "20100806 PM 0457"  (
            echo.   [ %K-%I-%J %L:%M %N    %P. ]
        )
 )

Stack Overflow の質問Batch File: Iterate Over Files Modified since a given Dateからこの天才スクリプトを取得しました。

すべてのファイルを表示したいので、gstmp\*yell*.tifjustに変更しました。*

残念ながら、それは私にとってはうまくいきません。

それはまったく何も反響しません。私は間違って何をしていますか?

4

1 に答える 1

1
@ECHO OFF
SETLOCAL

:: Create a dummy directory
MD c:\dummy
XCOPY /L /s /d:04-01-2013 c:\startdir c:\dummy >u:reportfile.txt

:: Way the second
SET "line="
DEL u:\reportfile2.txt 2>nul
FOR /f "delims=" %%i  IN (
 'XCOPY /L /s /d:04-01-2013 c:\startdir c:\dummy'
 ) DO CALL :output "%%i"

:: Delete the dummy directory
RD /s /q c:\dummy

GOTO :eof

:output
IF DEFINED line ECHO %line% >>u:reportfile2.txt
SET line=%~1
GOTO :eof

次の 2 つの方法があります。

mm-dd-yyyy 形式で指定された日付以降に作成/変更されたすべてのファイルが一覧表示されます。これXCOPYは、それぞれが作成されたダミーの空のディレクトリにコピーされるためです。/L はLISTS、コピーされるファイルのみです。

最初の方法は、ファイル数を報告する行を追加します。2 番目の方法は、その出力を抑制します。方法 2 には欠点があります。(明らかに) より複雑で、いくつかの奇妙なファイル名が破損する可能性があります (これは、本当に必要な場合は克服できます...)。賢明なファイル名を使用している場合、それは仕事をします...

于 2013-04-10T17:10:51.733 に答える