windows - 批处理文件以监视添加到下载文件夹

标签 windows batch-file

我需要一个批处理文件来监控我的“下载”文件夹中的添加内容,但仅限于新添加的内容。像这样:

: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:

我一直很喜欢library of batch functions由里奇劳伦斯。其中一个函数称为 GetDirStats .

GetDirStats 函数返回指定目录的文件数、子目录数和总大小。可能方便将来引用。虽然只在NT4/2000/XP/2003上测试过。
只需将 compact/s 更改为 compact 即可不扫描子文件夹。

关于windows - 批处理文件以监视添加到下载文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4230976/

相关文章:

c++ - 当我的 C++ 控制台程序被未知进程关闭时如何删除?

windows - 如何将 firebird 作为应用程序运行?

Windows 服务未启动

windows - 从登录 ID (LUID) 获取 UserToken (C++)

batch-file - 设置在 bat 脚本中的 for + if 中不起作用,即使设置 ENABLEDELAYEDEXPANSION

batch-file - 在后台运行批处理文件

windows - NtQueryObject 卡在具有特定访问掩码的对象类型编号 30 上

batch-file - 当他省略扩展名 .exe 以终止进程时,如何检查和更正用户输入?

windows - 批量格式化文件日期YYYYMMDD

sql - 在命令行上执行一系列SQL命令