我在计算批处理文件中特定文件夹中的文件时遇到问题。 我在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问题答案的片段,但它仍然无效。 我究竟做错了什么?我是否需要更改任何其他设置?
答案 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