批处理脚本检查文件夹中的文件数,然后执行命令

时间:2014-08-28 18:32:38

标签: batch-file smtp

我不是一个脚本专家,也不是现实生活中的一个。 我试图在Windows 2003服务器上执行以下操作(是的Win2K3..dont ask..please)

我需要检查D:\ mailqueue中的文件数量 如果文件数为零则不执行任何操作。

如果文件数超过1,则重新启动Windows SMTP服务。 重新启动完成后,再次检查同一文件夹以确保文件计数为零。 如果没有,则再次执行SMTP restart命令。 继续重启直到队列为零。

帮助!

我想我得到了第一部分,文件数量(是的,可能看似微不足道,但对我来说是一个巨大的成就)......

@echo off
setlocal
set /a count=0
for /F %%N in ('dir "C:\mailqueue" ^| find "File(s)"') do set count=%%N
echo count=%count%
endlocal

现在我需要知道如何在count中取这个值,如果它大于零,那么执行一个windows服务的重启。重新启动后,我需要再次计数,看看它是否为零。如果它不再那么重新启动并继续这样做直到计数为零。

muchos gracias

1 个答案:

答案 0 :(得分:0)

这应该适合你 -

:do_it_again    
for /f %%i in ('dir c:\mailqueue ^| findstr /i /c:"file(s)"') do set count=%%i  
if "count" neq "1" (    
    net stop smtpsvc & net start smtpsvc
    )
goto :do_it_again   

干杯,G