这是我想要的,在BACKUPDIR内,我要执行cscript /nologo c:\deletefile.vbs %BACKUPDIR%,直到文件夹内的文件数大于21(countfiles保留了它)。
这是我的代码:

@echo off
SET BACKUPDIR=C:\test
for /f %%x in ('dir %BACKUPDIR% /b ^| find /v /c "::"') do set countfiles=%%x

for %countfiles% GTR 21 (
cscript /nologo c:\deletefile.vbs %BACKUPDIR%
set /a countfiles-=%countfiles%
)

最佳答案

set /a countfiles-=%countfiles%

这会将countfiles设置为0。我想您希望将其减少1,因此请改用此方法:
set /a countfiles-=1

我不确定for循环是否会工作,最好尝试如下操作:
:loop
cscript /nologo c:\deletefile.vbs %BACKUPDIR%
set /a countfiles-=1
if %countfiles% GTR 21 goto loop

10-06 04:03