我会继续制作一个脚本来检查文件夹中的文件数量。为此,我将文件夹存储在这样的数组中:
set myArray[0]="C:\testFolder\test1\"
set myArray[1]="C:\testFolder\test1\"
为此,我启动了一个变量来计算文件的数量。
set /a filesCount=0
然后我创建循环来遍历数组
for %%v in (0, 1, 1) do (
for /r %myArray[%v%]% %%i in (*.*) do (
set filesCount+=1
)
echo %filesCount%
)
在我的第一个文件夹中,我有 1 个文件,但程序系统地为变量 filesCount 返回 0。我希望它显示第一个文件夹为 2,第二个文件夹为 0。
我也试试这个:
for %%v in (0, 1, 1) do (
for /r !myArray[%v%]! %%i in (*.*) do (
set filesCount+=1
)
echo %filesCount%
)
还有这个:
for %%v in (0, 1, 1) do (
for /r %myArray[%%v]% %%i in (*.*) do (
set filesCount+=1
)
echo %filesCount%
)
@ECHO Off
SETLOCAL ENABLEDELAYEDEXPANSION
set "myArray[0]=u:\testFolder\test1"
set "myArray[1]=u:\testFolder\test2"
SET /a total=0
FOR /L %%v IN (0,1,1) DO (
SET /a count=0
PUSHD "!myArray[%%v]!"
FOR /r %%i IN (*.*) DO (
SET /a count+=1
)
popd
SET /a total+=count
ECHO !count! files IN !myArray[%%v]! total !total!
)
ECHO total is %total%
GOTO :EOF
请注意,我已经更改了目录名称以适合我的系统。
pushd
更改指定目录; popd
返回到匹配的pushd
执行时的当前目录。
请注意,
delayedexpansion
语法 (!var!
) 用于变量在循环内发生变化的地方,并强制表达式 myArray[%%v]
在使用值之前进行评估。
set /a
总是使用变量的run-time
值。