因此,我将计算目录中的文件数(包括所有子文件夹),并获取在目录中找到的文件数量的输出。问题是我想排除所有名为 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/