文件夹的路径和格式进入批处理文件的输入 文件(例如txt)(作为批处理文件的参数)。 该文件夹必须包含其他文件。 如果该文件夹不存在,则写“此文件夹不存在”,然后 终止程序。 如果存在这样的文件夹,则在其中及其子文件夹中查找所有内容 安装了指定扩展名的文件 存档属性。输出此类文件的数量 控制台
[编辑/]
这就是我所拥有的:
@echo off
if not exist %1 (echo "This folder does not exist" && pause && exit /B )
set /a count=0
for %%i in (dir %1\*.%2 /A:A /S ) do ( set /a count+=1 )
Echo in the folder %1, found %count% files with extension %2 and attribute
Archive
pause
答案 0 :(得分:0)
您的for %%i in (dir %1\*.%2 /A:A /S ) do ...
行在某些方面是错误的。
您要处理命令的输出:添加/f
并将命令单引号引起来。
您计算输出的每一行(包括标题和摘要:添加/b
仅列出文件名。
如果您的参数中有空格,它将失败:使用%~n
删除所有引号并引用完整路径。
总的来说,该行应该是:
for /f %%i in ('dir /b "%~1\*.%~2" /A:A /S') do ...
有关详细信息,请参见for /?
和dir /?
。
(确切地说,您还应该添加"delims="
来获取整个文件名,而不只是它的第一个单词,但是由于您只是在数行,因此不会有任何改变)
另一件事:if not exist %1 (echo "This folder does not exist"
不理想。如果未提供任何参数,%1
为空,则if
会产生if not exist (echo
(尝试查找名为(echo
的文件,并且要执行的命令为{{1 }},导致错误消息"This folder does not exist"
更安全的语法:'"This folder does not exist"' is not recognized as an internal or external command, operable program or batch file.
答案 1 :(得分:0)
此批处理文件对我有用。一个问题是,没有/ B选项,它还会计算目录返回的额外记录。您当前的“ for”实际上是在计算其中的语句部分,而不是运行命令时的实际输出。
@echo off
cls
SETLOCAL EnableDelayedExpansion
if not exist %1 (echo "This folder does not exist" && pause && exit /B )
set /a count=0
for /f "tokens=*" %%G in ('dir "%1\*.%2" /A:A /S /B') do (
set /a count+=1
)
Echo in the folder %1, found %count% files with extension %2 and attribute Archive
pause