我有一个批处理文件来计算文件夹中特定文件的数量。内容如下:
set xx = %DATE:~10,4%%DATE:~4,2%%DATE:~7,2%
set count=dir C:\Archive\*%xx%.csv | find "File(s)"
echo %count%
但是最后一个命令的输出显示为
echo
ECHO is on
我在这做错了什么?有人可以帮忙吗?
答案 0 :(得分:2)
要执行命令并检索其输出,您需要for /f
命令(请参阅for /?
帮助)
set "xx=%DATE:~10,4%%DATE:~4,2%%DATE:~7,2%"
for /f %%a in ('dir /a-d /b "c:\Archive\*%xx%.csv" ^| find /c /v ""') do set "count=%%a"
echo %count%
这将为所有文件执行dir命令,不包含列表中的文件夹,采用裸格式(无标题,摘要和无附件文件信息),而不是搜索File(s)
(在不同的窗口中)区域设置文本不同),它使用find
来计算(/c
)非空行数(/v ""
)。输出是一个存储在for
可替换参数%%a
中的数字,然后复制到所需的变量