检测正在将文件复制到文件夹中

Joh*_*Doe 2 windows perl lockfile batch-file

我正在运行一个脚本,如果它不存在(或不一致),则从特定位置复制一个文件夹.当我多次运行脚本2次以上时会出现问题.当第一个脚本试图复制文件时,第二个脚本会尝试同样的事情导致一团糟.我怎么能避免这种情况?类似于系统范围的互斥体.

我尝试了一个简单的测试-w,我手动复制了文件夹,当文件夹复制时我运行脚本:

use strict;
use warnings;

my $filename = 'd:\\folder_to_copy';
if (-w $filename) {
  print "i can write to the file\n";
} else {
  print "yikes, i can't write to the file!\n";
}
Run Code Online (Sandbox Code Playgroud)

当然这不起作用,因为我仍然有写入该文件夹的访问权限.有关如何检查文件夹是否被复制Perl或使用的任何想法batch commands

nwe*_*hof 7

听起来像锁文件的工作.有无数的CPAN模块可以实现锁定文件,但大多数都不能在Windows上运行.根据CPAN测试人员,以下是一些似乎支持Windows的方法:

在快速查看源代码后,我可以推荐的唯一模块是File :: Flock :: Tiny.其他人似乎很生气.