如果在过去24小时内没有创建新文件夹,则批处理文件以执行操作



我现在正在尝试制作一个每天运行的批处理脚本,并检查存储所有文件的文件夹。我想检查最近的文件夹(或文件夹中的文件(是何时创建的,如果在过去24小时内没有任何新的文件夹(文件(,那么执行我正在工作的其他脚本来提醒我们。

但如果在过去24小时内创建了新的文件夹/文件,我不知道如何在此之前添加以创建/更改变量。非常感谢您的帮助。

编辑:我更改了代码,我被困在这里了。如果我删除";设置计数=";forfiles行返回修改的正确文件数。但当我将其设置为set count=时,它开始返回0,而不是正确的数字。

我也不知道我的if声明是否有效,因为我还没有走那么远。

@echo off
set day=-1
echo >"%temp%%~n0.vbs" s=DateAdd("d",%day%,now) : d=weekday(s)
echo>>"%temp%%~n0.vbs" WScript.Echo year(s)^& right(100+month(s),2)^& right(100+day(s),2)
for /f %%a in ('cscript /nologo "%temp%%~n0.vbs"') do set "result=%%a"
del "%temp%%~n0.vbs"
set "YYYY=%result:~0,4%"
set "MM=%result:~4,2%"
set "DD=%result:~6,2%"
set "data=%mm%/%dd%/%yyyy%"
set count=forfiles /S /D +%data% /C "cmd /C if @isdir==FALSE echo _" | find /C "_"
IF count = 0 powershell.exe -file C:UserProjectaction.ps1

尝试一下,注意for循环以获得计数:

@echo off
set day=-1
echo >"%temp%%~n0.vbs" s=DateAdd("d",%day%,now) : d=weekday(s)
echo>>"%temp%%~n0.vbs" WScript.Echo year(s)^& right(100+month(s),2)^& right(100+day(s),2)
for /f %%a in ('cscript /nologo "%temp%%~n0.vbs"') do set "result=%%a"
del "%temp%%~n0.vbs"
set "YYYY=%result:~0,4%"
set "MM=%result:~4,2%"
set "DD=%result:~6,2%"
set "data=%yyyy%/%mm%/%dd%"
for /f "delims=" %%i in ('forfiles /S /D +%data% /C "cmd /C if @isdir==FALSE echo _" ^| find /C "_"') do set "count=%%i"
IF %count% equ 0 (
echo powershell.exe -file C:UserProjectaction.ps1
) else (
echo count was %count%
)

我还将set "data=%dd%/%mm%/%yyyy%"更改为set "data=%yyyy%/%mm%/%dd%",因为这就是我回忆forfiles使用日期格式的方式。不在我的windows设备上,因此无法验证。

由于您已经有了PowerShell脚本,因此使用PowerShell可能更容易。我还没有跑过,但应该很接近。

#Requires -Version 3
if ((Get-ChildItem -Directory -Path 'C:srct' |
Where-Object { $_.CreationTime -gt (Get-Date).AddHours(-24) }).Count -eq 0) {
C:UserProjectaction.ps1
}

批处理文件是一种基于字符串的语言,因此这个

set count=forfiles /S /D +%data% /C "cmd /C if @isdir==FALSE echo _" | find /C "_"
IF count = 0 powershell.exe -file C:UserProjectaction.ps1

对解析器来说是无稽之谈。您应该使用的是FOR /F循环。


我想检查最近的文件夹(或文件夹中的文件(是何时创建的,如果最近24小时内没有任何新的文件夹(文件(,则执行我正在处理的其他脚本来提醒我们。

对于文件:

robocopy . . /S /IS /MAXAGE:1 /L /FP /NS /NC /NDL /NJH /NJS >nul 2>&1&&powershell -file 'C:UserProjectaction.ps1'

对于FOLDERS,使用本机实用程序会非常困难,powershell/vbscript会更容易。

最新更新