2013-04-10 46 views
0

我試圖讓所有的整個目錄結構已創建或某一特定日期之後修改過的文件:使用CMD /批處理文件來獲取所有遞歸修改或特定日期後創建的文件

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. ] 
     ) 
) 

我得到了這位天才腳本:

https://stackoverflow.com/a/3481067/117700

我改變gstmp\*yell*.tif是公正*因爲我希望看到所有文件

不幸的是,它不適合我。

它沒有任何迴音。

**what am i doing wrongly?** 
+0

爲什麼'bash'標籤? – enzotib 2013-04-10 16:41:16

+0

@enzotib哎呀!我的錯將刪除它 – 2013-04-10 16:51:23

+0

你的文件夾中是否有名爲' Yell .tif'的文件? (這是'dir'語句中的文件掩碼。)如果是這樣,列表中的文件是否在'dir'語句的輸出中包含'2010'?如果不是,批處理文件根本不會迴應,因爲您沒有任何迴應。 (你似乎也錯過了'if'語句中的幾個'%'字符。) – 2013-04-10 17:03:49

回答

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 

這裏有兩種方式:

XCOPY列表創建/所有文件在MM-DD-yyyy格式指定的,因爲每個人會被複制到創建的虛擬空目錄的日期之後修改。/L只有LISTS將被複制的文件。

第一種方法添加一行報告filecount。第二種方法抑制輸出。方法2有它的缺點 - 它更復雜(顯然),並且一些奇怪的文件名可能被破壞(如果真的有必要,這可以被克服)。如果你使用明智的文件名,它會完成這項工作......

相關問題