我需要一个批处理文件来监视“下载”文件夹中的添加内容,但仅限于新添加的内容。像这样的事情:
:START
NumOldFiles = GetNumberOfFilesOld
Delay_30_Seconds
NumNewFiles = GetNumberOfFilesNew
if(NumFilesOld < NumFilesNew)
run_another_batch_file_I_wrote
goto START
else
goto START
我不想计算子文件夹,只计算目录中的文件夹和文件。
我一直在看这个:
dir "C:\folder" /b/a |find /v /c "::"
但我不知道如何存储这个值并将其测试为 。
也许有更好的方法来做到这一点,但我现在想不出一个。也许维护一个列表,如果新列表有一个新文件,运行批处理脚本,用新列表替换旧列表,我不太确定如何处理这个问题。
答案1:
以下代码片段应该可以帮助您朝着正确的方向前进。它用dir /b
获取文件和用途的原始列表fc
(文件比较)检查每次执行检查之间的差异。
您可以使用任务计划程序每 x 分钟启动一次此批处理文件:
@echo off
if not exist c:\OldDir.txt echo. > c:\OldDir.txt
dir /b "d:\My Folder" > c:\NewDir.txt
set equal=no
fc c:\OldDir.txt c:\NewDir.txt | find /i "no differences" > nul && set
equal=yes
copy /y c:\Newdir.txt c:\OldDir.txt > nul
if %equal%==yes goto :eof
rem Your batch file lines go here
答案2:
我一直很喜欢一个批处理函数库 https://ritchielawrence.github.io/batchfunctionlibrary/作者:里奇·劳伦斯。其中一个函数称为GetDirStats https://github.com/ritchielawrence/batchfunctionlibrary/blob/master/File%20and%20Directory%20Functions/GetDirStats.html.
The GetDirStats
函数返回指定目录的文件数、子目录数和总大小。可能方便以后参考。虽然它只在 NT4/2000/XP/2003 上测试过。
只是改变compact/s
to compact
不扫描子文件夹。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)