2017-06-18 13 views
0

dirコマンドを実行できません。all.xmlというファイル名を指定するとエラーが表示され、/sコマンドを使用して検索を再帰的に行うことはできません。次のエラーcannot access no such file exists/sパラメータを再帰的に検索するためのものであることを理解していないが、プログラムは、これはPerlのとは何の関係もありませんファイルパスperlスクリプトからdirコマンドにパラメータを渡すことができません

use strict; 
use warnings; 
print "i"; 
my $vall = ` dir //server1/dxx/mxx/rxx/ "ui.xml" /s`; 

print $vall; 
+0

これはウィンドウにありますか?おそらくバックスラッシュが必要です。 – simbabque

+0

@simbabqueはい窓、私はバックラッシュを書くことができない、cmdのCygwinのツールは、私がコマンドを実行すると、私は 'rxx'フォルダ内のすべてのファイルをリストすることができます'/ s'パラメータがファイルパスとして解釈されるため、再帰的にファイルを見つけることができません。 – PopCorn

+0

パスの前にスイッチを置きます。 – simbabque

答えて

1

として解釈します。 dirに渡す引数が正しくありません。

  • dirそれが引用されていますしない限り、あなたがすべきではない路の途中にスペースを持っている、と
  • /sはパスでは動作しません
  • 、オプションの開始として/を解釈/とファイルコンポーネントの両方を含む。

さらに、/sに加えて、が必要です。

は修正:言っ

dir "\\server1\dxx\mxx\rxx\ui.xml" /s/b 

ので

my $dir_output = `dir "\\\\server1\\dxx\\mxx\\rxx\\ui.xml" /s/b`; 

例、

>dir "//localhost/C$/Users/ikegami/Desktop/" /s/b 
\\localhost\C$\Users\ikegami\Desktop\a.jpg 
\\localhost\C$\Users\ikegami\Desktop\cabinet.txt 
... 

>dir "//localhost/C$/Users/ikegami/Desktop/a.jpg" /s/b 
File Not Found            <-- WTF? 

>dir "\\localhost\C$\Users\ikegami\Desktop\a.jpg" /s/b 
\\localhost\C$\Users\ikegami\Desktop\a.jpg 
\\localhost\C$\Users\ikegami\Desktop\x\a.jpg 

>dir \\localhost\C$\Users\ikegami\Desktop\a.jpg /s/b 
\\localhost\C$\Users\ikegami\Desktop\a.jpg 
\\localhost\C$\Users\ikegami\Desktop\x\a.jpg 

>type a.pl 
print `dir \\\\localhost\\C\$\\Users\\ikegami\\Desktop\\a.jpg /s/b` 

>perl a.pl 
\\localhost\C$\Users\ikegami\Desktop\a.jpg 
\\localhost\C$\Users\ikegami\Desktop\x\a.jpg 

は、私が個人的にFile::Find::Ruleを使用すると思います。

use File::Find::Rule qw(); 

my $qfns = 
    File::Find::Rule 
    ->name('ui.xml') 
    ->file 
    ->in('//server1/dxx/mxx/rxx'); 
+0

'/ s'はまだ'/s:そのようなファイルやディレクトリはありません 'と解釈され、' ui.xml'は 'rss'とそのサブディレクトリ内で検索しようとしているファイルです – PopCorn

+0

私はコマンドを試しましたこれは私が 'cygwin警告を受け取ったエラーです: MS-DOS形式のパスが検出されました:\ server1 \ dxx \ mxx \ rxx \ ui。xml l 同等の優先POSIXは次のとおりです。/cygdrive/d/server1/dxx/mxx/rxx/ui.xml CYGWIN環境変数オプション "nodosfilewarning"はこの警告をオフにします。 POSIXパスの詳細については、ユーザーガイドを参照してください。 http://cygwin.com/cygwin-ug-net/using.html#using-pathnames dir:\\\\ server1 \\ dxx \\ mxxにアクセスできない\\ rxx \\ ui.xml:N このファイルまたはディレクトリ dir:アクセスできません/ s:そのようなファイルまたはディレクトリがありません dir:アクセスできません/ b:そのようなファイルまたはディレクトリ ' – PopCorn

+0

しかし、 '/ s 'スイッチはまだパスとして解釈されます。 – PopCorn

関連する問題