2015-05-05 27 views
1

我想搜索我的不同驅動器中的文件大小低於800Ko,並啓動它們的MD5校驗和(使用Microsoft工具FCIV)。如何搜索大於特定大小的文件並在其上執行某些操作?

我認爲這可以使用dir命令完成,但我不知道如何檢查文件大小(低於800Ko),然後能夠檢索每個文件的完整路徑並將其添加爲FCIV命令的參數。

編輯:我使用此代碼,但實際上這個過程永遠不會結束,因爲它是在我有「訪問被拒絕」的目錄上找到的。 有可能跳過這些目錄?

@echo off 
setLocal EnableDelayedExpansion 
REM for /f "tokens=* delims= " %%a in ('dir /A HS /s /b c:\') do (
for /f "tokens=* delims= " %%a in ('dir c:\ /s /b /A-d') do (
if /I %%~Za LEQ 600000 (
echo %%~Za 
fciv -md5 "%%~a" -xml DatabaseMD5.xml 
          ) 
                   ) 

@pause 

謝謝

+0

整個驅動器?這可能真的很慢.. – npocmaka

+0

其實,我已經在整個驅動器上調用dir/s/b,並且它不是很慢(不到一分鐘)。對我來說,最好的解決方案應該是生成一個DIR.TXT文件,並將其用於腳本;但我沒有找到DIR命令的方式來使「全路徑」和一次顯示文件的大小。 (因爲我的腳本的另一個模塊是搜索特定文件)。 – Isabelle

+0

僅供參考':for/f「delims =」%% a in('dir/s/b/ad c:')do(...'。注意''「delims =」' s/b/ad c:'將從'c:'驅動器上的當前目錄開始;使用'dir/s/b/ad c:\'覆蓋整個驅動器... – JosefZ

回答

0

哇,你想要做這個驅動器上的每個文件?無論如何,這裏有一些你到目前爲止的調整。

@echo off 
rem setLocal EnableDelayedExpansion 
for /R c:\ %%a in (*) do (
    if %%~za GTR 0 if %%~za LSS 800000 (
     echo "%%a" %%~za 
     fciv -md5 "%%a" -xml DatabaseMD5.xml 
    ) 
) 

pause 
+0

爲什麼延遲擴展?Anyway這應該工作... – npocmaka

+0

絕對不需要在我們已經顯示的bat文件的部分,我假設可能有更多的處理繼續下去,因爲它在那裏的問題 –

+0

謝謝你們。使用此代碼(請參閱我編輯過的帖子),但是當我在沒有足夠權限的目錄上完成DIR時,我遇到了一個問題。該進程在此過程中陷入困境並永不結束)。 – Isabelle

相關問題