0

浏览了类似的问题并被困在我的剧本上。

基本上,我需要这个 .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
4

2 回答 2

2

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

for %%a in (\\ip_of_server\Directory\LockBox*.txt) do set /a count+=1
于 2013-05-01T05:26:45.103 回答
0

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

您应该生成的代码是4因为您/已经从 FOR 中省略了/f,所以它评估'dir, a/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
于 2013-05-01T05:14:42.817 回答