通过类似的问题进行搜索,我的帖子被困在我的脚本中。
基本上,我需要这个.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
答案 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
,因此会评估'dir
,a/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