2017-06-09 2 views
1

リモートサーバーのディレクトリにファイル名を表示するためのperlスクリプトを作成していますが、WMICコマンドが見つかりませんでしたリモートサーバーにアクセスし、特定のパスをたどってファイルを見つけてファイル名を取得するための他のコマンドがありますか?リモートサーバーに移動してパスをたどってファイル名を取得するコマンドがあります

use strict; 
use warnings; 
use File::Find::Rule; 
use File::Basename qw(basename); 
my $path = "\\\\vmw2160\\dir1"; 

my @full_pathes = File::Find::Rule->file->name('data.html')->in($path);print "."; 
my @files = map { lc basename $_ } @full_pathes; 
print foreach(@files); 

my %file = map { $_ => 1 } @files; 
print foreach(%file);  
+0

ok、それは少し不明です。リモートサーバーにはどのようにアクセスしますか? UNC?マップされたドライブ? –

+1

また、特定のファイル名を検索している場合、その名前を既に知っていれば、その名前を取得する理由は何ですか?それが存在するかどうかを確認し、そのパスを表示するか、目的が何であるかを確認しますか? –

+0

@GerhardBarnard:私は通常、特定のサーバーに絞り込むためにwmic/node serverNameコマンドを使用しました。ファイルが存在するかどうかを動的にチェックしたい場合は –

答えて

0

あなたは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パスをとるコードを変更しました。

+0

コードを特定のサーバーに絞り込むことができます。議論、私はあいまいな質問を掲示して本当に残念です –

+0

はい、しかし、あなたはコードを構築する必要があります。私は特定の質問に答えました。さらに何かが必要な場合は、新しい質問 –

+0

を作成してください。どのようにコードを修正してUNCパスで動作させることができますか?findファイルメソッドは、パス。 –

関連する問題