あなたはNumber::Compareは、依存関係であることをCPANからFile::Find::Ruleモジュールを使用する必要があります。スクリプトのいくつかの部分の横にあるコメントを参照してください。
use strict;
use warnings;
use File::Find::Rule;
use File::Basename qw(basename);
my $path = "\\\\devicename\\sharename"; #Enter your path here, i.e Network drive
my $report = 'notfound.txt'; #This is just a log to tell you which files you searched for does not exist on the drive
print 'Enter file that contains list of files to search: ';
my $expected = <STDIN>;
chomp $expected;
open(my $fh, '<', $expected) or die "Could not open '$expected' $!\n";
open(my $out, '>', $report) or die "Could not open '$report' $!\n";
my @full_pathes = File::Find::Rule->file->name('*')->in($path);
my @files = map { lc basename $_ } @full_pathes;
my %file = map { $_ => 1 } @files;
while (my $name = <$fh>) {
chomp $name;
if ($file{lc $name}) {
print "$name found\n";
} else {
print $out "$name\n";
}
}
close $out;
close $fh;
次に、検索するファイルのリストを含むファイルを作成します。さんはmyfiles.txt
それを呼び出すと、リスト形式でファイルを入力してみましょう:
filename1.txt
filename2.pdf
filename3.bat
、スクリプトを実行し、要求に応じて、プロンプトにファイル名myfiles.txt
を入力し、入力します。
EDITはUNCパスをとるコードを変更しました。
ok、それは少し不明です。リモートサーバーにはどのようにアクセスしますか? UNC?マップされたドライブ? –
また、特定のファイル名を検索している場合、その名前を既に知っていれば、その名前を取得する理由は何ですか?それが存在するかどうかを確認し、そのパスを表示するか、目的が何であるかを確認しますか? –
@GerhardBarnard:私は通常、特定のサーバーに絞り込むためにwmic/node serverNameコマンドを使用しました。ファイルが存在するかどうかを動的にチェックしたい場合は –