2015-05-05 30 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

相关问题