扫描目录的批次需要跳过定义的目录

时间:2017-08-15 14:09:20

标签: windows batch-file cmd

我有一个扫描目录结构的批处理,并给出我应该查找的directorys的大小。

E.g。目录'10XXX'包含子目录'10001','10002'和'10003'。现在让我们说批处理应该在这些子目录中寻找目标'XYZ'。结果是.csv,其中的信息类似于'10001 \ XYZ'100 Bytes; '10002 \ XYZ'2000字节; '10003 \ XYZ'0字节。

问题是每次运行时批处理扫描每个目录,这需要大量的时间和资源。

我的想法是在代码中实现一个部分,每次批处理开始扫描目录时,它会查看.txt(例如),当在该文件中找到目录名时,批处理会跳过目录。 这可能不是最有效的解决方案,但每次扫描每个目录所需的时间和资源都会减少。 所以不同的想法当然是受欢迎的。

不幸的是,我自己没有足够的知识去做,所以我希望有人可以帮助我。

代码:

@echo off &setlocal 
set /p rootfolder=<Enter_Directory_Path_Here.txt 
set /p savefolder=<Enter_Save_Directory_Here.txt
set "batpath=%~dp0" 

pushd "%rootfolder%" 
for /d %%i in (*) do (
set "foldername=%%~nxi" 
set "folder=%%i" 
>"%batpath%%%~nxi.csv" type nul 
for /f "delims=" %%j in ('dir /ad /b "%%i\*"') do ( 
set "subfolder=%%j" 
call :procfolder 
) 
>"%batpath%%%~nxi.~csv" type nul 
for /f "usebackq tokens=1* delims==" %%j in ("%savefolder%\patterns.txt") do ( 
>>"%batpath%%%~nxi.~csv" findstr /b %%k "%batpath%%%~nxi.csv" 
if errorlevel 1 >>"%batpath%%%~nxi.~csv" echo "%%j";"not found" 
) 
>nul move /y "%batpath%%%~nxi.~csv" "%batpath%%%~nxi.csv" 
) 
popd 
call :cleaner
exit /b 

:procfolder 
setlocal 
for /f "tokens=3" %%i in ('dir /a /-c "%folder%\%subfolder%\"^|findstr /c:"Datei(en)"') do >>"%batpath%%foldername%.csv" echo "%subfolder%";%%i;"Bytes"
for /f "delims=" %%i in ('dir /ad /b "%folder%\%subfolder%\"') do ( 
set "subfolder=%subfolder%\%%i" 
call :procfolder 
) 
endlocal 
exit /b  

1 个答案:

答案 0 :(得分:0)

读取文本文件以匹配

的示例
[ts]
Property 'data' does not exist on type 'HttpEvent<Customer>'.
Property 'data' does not exist on type 'HttpSentEvent'.

如果排除文件名用引号括起来,请添加for /F "tokens=*" %%X in (N:\SomeDirectory\SomeFile.txt) do if /I "%foldername%" EQU "%%X" goto SKIPIT REM Do your normal stuff here :SKIPIT 选项:

usebackq