计算批处理文件中文件夹中的文件并不按预期工作

时间:2017-10-11 11:57:17

标签: batch-file cmd

我在计算批处理文件中特定文件夹中的文件时遇到问题。 我在C:\ logs的文件夹包含七个不同的日志文件。

当我运行包含以下内容的批处理文件时,我总是得到" 1"作为COUNT的值:

SETLOCAL ENABLEDELAYEDEXPANSION

SET LOGS_LOCAL=C:\logs

SET COUNT=0

REM Count logs
for %%A in ("%LOGS_LOCAL%") do set /a COUNT+=1

echo !COUNT!
pause

正如您所看到的,我使用了this问题答案的片段,但它仍然无效。 我究竟做错了什么?我是否需要更改任何其他设置?

3 个答案:

答案 0 :(得分:3)

只是为了向您展示不同的方式:

for /f %%a in ('dir /b /a-d ^|find /c /v ""') do set count=%%a
echo %count%

dir参数:
/b使用简单格式(仅限名称,无摘要,无标题)
/a-d排除文件夹(仅显示文件)

find /c /v ""然后只计算条目(/c = count,/v "" =每个非空行)

答案 1 :(得分:2)

我试验了一下,似乎必须准确指定所需文件。我从

更改了日志文件夹的路径
SET LOGS_LOCAL=C:\Backups\weekly\logs

SET LOGS_LOCAL=C:\Backups\weekly\logs\*.log

现在,我的批处理文件返回" 7" COUNT

答案 2 :(得分:1)

SET 1单个目录C:\logs作为您的变量LOGS_LOCAL,因此COUNT正在使用其输出结果1

我认为您打算在该目录中计算文件,如下所示:

@ECHO OFF

SET "LOGS_LOCAL=C:\logs"

SET "COUNT=0"
REM Count logs
FOR %%A IN ("%LOGS_LOCAL%\*.log") DO SET/A COUNT+=1

ECHO %COUNT%
PAUSE