1

perlのディレクトリ内のすべてのファイルで文字列を探したい. しかし、次のコードは機能しません

if ($^O eq "MSWin32") {
my @results = `findstr /s "Hello" /d:\\Testing`;
print "my results \n @results\n";
#or 
system('findstr /s "Hello" /d:\\Testing');
}

「C:」からスクリプトを実行しており、「Testing」ディレクトリが含まれています。Windows 以外のシステムでは、grep システム コマンドを使用して完全に正常に動作します。助けてください。ありがとう

4

5 に答える 5

0

http://search.cpan.org/~mneylon/File-Grep-0.02/Grep.pmを試してみてください。

また、Linux と Windows のクロス プラットフォーム関数を記述する場合、Windows 固有の機能をカバーするために、スクリプトの先頭にこれを含める傾向があります。

BEGIN { # include additional Win32 specific modules when running on MS platforms
  if ($^O =~ /Win32/) {
    require Win32::AdminMisc; import Win32::AdminMisc;
    require Win32::API; import Win32::API;
    require Win32::GUI; import Win32::GUI;
    $wincon=Win32::GUI::GetPerlWindow();
  }
}

# your code starts here
于 2013-07-18T21:55:58.480 に答える
0

ドキュメントから判断するとfindstrfindstrオプションが少し混同されているようです。/dは引数を取らず、検索文字列と開始パスの前にスイッチが必要なようです。だからこれを試してください:

findstr /d /s "Hello" \\Testing

現在使用しているコマンドの代わりにfindstr使用すると、より良い結果が得られる場合があります。

于 2013-07-18T21:55:59.743 に答える