如何使用批处理(Windows XP)获得准确的文件计数?

时间:2013-05-01 04:37:12

标签: batch-file windows-xp-sp3

通过类似的问题进行搜索,我的帖子被困在我的脚本中。

基本上,我需要这个.bat来检查目录中是否有带Lockbox前缀的文件数,将计数存储到变量中,最后调用.exe来导入每个文件。

这是我到目前为止所拥有的。我的问题是测试目录总共有12个txt文件,但我只需要带有Lockbox前缀的文件(其中11个):

@echo off

set count=0

for %%a in ('dir /a-d /a-h /a-s "\\ip_of_server\Directory\LockBox*.txt"') do set /a count+=1

@echo File count = %count%
pause

2 个答案:

答案 0 :(得分:2)

如果您不想显示目录和子目录,则无需使用“dir”命令,因为FOR不会包含它们。但是,如果它们以LockBox开头,它可能会包含任何隐藏文件。只需将第5行更改为(如果空格位于路径中,则可能需要使用括号):

for %%a in (\\ip_of_server\Directory\LockBox*.txt) do set /a count+=1

答案 1 :(得分:0)

我会非常小心 - 仔细看看你的COUNT。如果您有11个通过属性测试的LOCKBOX * .txt文件,则代码的响应应为4

您拥有的代码应该生成4,因为您已经从FOR中省略了/f,因此会评估'dira/d ...并跳过双引号项目(我不知道为什么它会跳过双引号项目。)

如果在其位置使用FOR /F,则会使用16登陆,因为dir命令的输出包括5个非空行 - 标题中为3在摘要中。

如果您尝试

for /f %%a in ('dir /B /a-d /a-h /a-s "\\ip_of_server\Directory\LockBox*.txt"') do set /a count+=1&echo %%a

那么你的计数应该是正确的,你也会得到文件名。

如果您只想要计数,您也可以尝试

for /f %%a in ('dir /a-d /a-h /a-s "\\ip_of_server\Directory\LockBox*.txt"^|find "File(s)"') do set count=%%a