【发布时间】:2016-03-18 17:04:08
【问题描述】:
我有一个工作批处理脚本,它计算目录树(包括子目录)中的 .txt 文件,然后如果计数 GTR 大于 2,则基本上通知用户他们必须在再次运行此脚本之前执行某些操作。
我希望脚本在通知用户时也告诉他们 txt 文件的文件名。
这就是我所拥有的。
下面会检查根文件夹和所有子目录中的 .txt 文件。 这会计算 .txt 文件的数量并设置它。
@echo off & Setlocal
:: Search for files in the Tree
Set "sFolder=C:\folder\folder\root"
Set "sFileType=txt"
set "i=0"
PushD "%sFolder%" &&(
FOR /R "." %%i IN (*) DO ( If /i "%%~xi"==".%sFileType%" ( set /a i+=1 ) ) )
如果计数大于 3,则转到通知用户(这是简单的回显命令)
If %i% GTR 2 goto NotifyUser
我没有得到的是如何将 3 个或更多找到的 .txt 文件名回显给用户。我知道这将是一个变量,但我似乎无法弄清楚以及如何将其放入上述命令中。
另外.. 在回显中,有时文件名可能有一个“.”而不是扩展名
IE:文件名.txt.gpg
上面的 count 命令不会将示例文件名计为 .txt 文件... 但是取决于命令的名称回显可能会认为这是一个 txt 文件..我不希望上面的文件名示例作为计数的 txt 文件之一回显给用户(因为它不被计数)。 (希望这是有道理的)。
【问题讨论】:
-
你可以让
for /R循环已经对*.txt文件进行过滤,而不是枚举所有文件(*);所以不需要if /I语句。而不是pushd [...] && (for /R [...])我会使用pushd [...] && ((for /R [...]) & popd)...
标签: variables batch-file count