gpt4 book ai didi

Windows - 使用 perl 监视目录以查找新文件删除/创建

转载 作者:可可西里 更新时间:2023-11-01 10:06:04 34 4
gpt4 key购买 nike

正在寻找一种方法来监视目录中的新文件创建或删除。

因此,如果我有一个文件夹 c:\temp,并且如果在其中复制/创建了一个 abc.txt,我需要一个事件或其他东西,以便我可以获取该文件然后处理它。

另外,我想持续监控这个文件夹。我怎样才能做到这一点。我正在写一个服务来做这一切。我想将监控和处理合并到一个脚本中。

提前致谢。

最佳答案

答案在这里:In Perl, how can I watch a directory for changes?

对于 Linux:

use File::ChangeNotify;

my $watcher = File::ChangeNotify->instantiate_watcher(
directories => [ 'archive/oswiostat' ],
filter => qr/\Aoracleapps[.].*dat\z/,
);

while (my @events = $watcher->wait_for_events) {
# ...
}

我认为您使用的是 Windows,所以您必须使用 Win32::ChangeNotify

示例来自:http://www.perlmonks.org/?node_id=306175

use strict;
use Win32::ChangeNotify;

our $PATH ||= '.';
our $S = defined $S ? 1 : 0;

my $notify = Win32::ChangeNotify->new( $PATH, $S, 'FILE_NAME' );

my %last; @last{ glob $PATH . '/*' } = ();

while( 1 ) {
print('Nothing changed'), next
unless $notify->wait( 10_000 ); # Check every 10 seconds
$notify->reset;
print 'Something changed';
my @files = glob $PATH . '/*';
if( @files < scalar keys %last ) {
delete @last{ @files };
print 'These files where deleted: ';
print for keys %last;
}
elsif( @files > scalar keys %last ) {
my %temp;
@temp{ @files } = ();
delete @temp{ keys %last };
print 'These files where created: ';
print for keys %temp;
}
else {
print "A non-deletion or creation change occured";
}
undef %last;
@last{ @files } = ();
}

关于Windows - 使用 perl 监视目录以查找新文件删除/创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23731306/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com