我有一个扫描目录结构的批处理,并给出我应该查找的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
答案 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