我现在正在尝试制作一个每天运行的批处理脚本,并检查存储所有文件的文件夹。我想检查最近的文件夹(或文件夹中的文件(是何时创建的,如果在过去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会更容易。