2013-05-01 47 views
0

通过类似的问题拖累,我卡在我的脚本。如何使用批处理(windows xp)获取准确的文件数量?

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

这是我到目前为止所。我的问题是test目录共有12个txt文件,但我只需要密码箱前缀(其中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

如果您不希望显示目录和子目录,也没有必要使用,因为对于“目录”命令将不包括他们。但是,它可能包含任何隐藏文件,只要它们以LockBox开头。只需将第5行更改为(如果空间位于路径中,则可能需要使用括号):

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

获胜者赢家...谢谢 – dangoody27 2013-05-01 06:05:51

0

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

你应该产生4的代码,因为你/ VE省略从您对/f,所以评估'dira/d ...并跳过双引号项目(我不知道为什么它会跳过双 - 被引证的项目)。

如果在它的位置使用FOR /F,你会降落了16因为dir命令的输出包括5个非空行 - 3中的首部和2中的摘要。

如果您尝试

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 
相关问题