【问题标题】:How to get accurate file count using batch (windows xp)?如何使用批处理(Windows XP)获得准确的文件计数?
【发布时间】:2013-04-25 03:15:03
【问题描述】:

浏览了类似的问题并卡在我的脚本上。

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

这是我目前所拥有的。我的问题是test目录一共有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

【问题讨论】:

    标签: batch-file windows-xp-sp3


    【解决方案1】:

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

    您拥有的代码应该生成 4,因为您/已经从 FOR 中省略了 /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
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2010-12-02
        • 2010-10-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-09
        • 2013-05-13
        相关资源
        最近更新 更多