gpt4 book ai didi

batch-file - 批量计算所有文件,但排除特定文件夹中的文件

转载 作者:行者123 更新时间:2023-12-03 16:48:42 25 4
gpt4 key购买 nike

因此,我将计算目录中的文件数(包括所有子文件夹),并获取在目录中找到的文件数量的输出。问题是我想排除所有名为 error 的文件夹。我不想计算该文件夹中的那些文件。

简单地...

for /r "\\server\share\folderA" %%G in (*.*) do (
set /A count=count + 1
)
echo %count%

在文件夹A下有很多我正在计算的子文件夹,但也有我不想计算的“错误”文件夹。

所以我正在尝试以下操作...

创建一个名为 exclude.txt 的临时文件,并在该文件中输入 error

if not exist "c:\temp" mkdir "c:\temp" 2>nul
if not exist c:\temp\exclude mkdir c:\temp\exclude 2>nul
echo error> %excludefolder%\exclude.txt

现在我想以某种方式将其结合起来。基本上做这样的事情......

for /r "\\server\share\folderA" %%G in (*.*) EXCLUDE: c:\temp\exclude\exclude.txt do (
set /A count=count + 1
)

但我知道这行不通,而且我不知道如何解决。有人知道吗?谢谢!

最佳答案

使用DIR/S/B/A-D 迭代所有文件。输出包括每个文件的完整路径。

将结果通过管道传送到 FINDSTR/L/I/V "\\error\\ 以过滤掉包含 \error\ 的路径。这还将排除任何文件夹在 error 文件夹中。可以修改搜索以仅排除“error”,但包括“error”的子级。

将该结果通过管道传输到 FIND/C/V "" 以计算文件(行)数。

dir /s /b /a-d | findstr /liv "\\error\\" | find /c /v ""

上面将简单地显示计数。

如果要捕获变量中的计数,请使用 FOR/F 解析上述命令的输出。在 FOR/F 中使用时,必须转义未加引号的有毒字符,例如 |

@echo off
for /f %%N in ('dir /s /b /a-d^|findstr /liv "\\error\\"^|find /c /v ""') do set count=%%N
echo count=%count%

关于batch-file - 批量计算所有文件,但排除特定文件夹中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35504311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com