2012-11-12 19 views
0
my $exe = "'C:/Program Files/Common Files/executable.exe'"; 

if(! -X $exe) { 
    print "exe file not found"; 
    exit 3; 
} 

my $cmd = $exe.' status'; 
@lines = qx ($cmd); 

我的問題是,我可以執行這個命令很好,但我不能爲我的生活弄清楚如何檢查exe文件的存在。任何提示?我嘗試過不同的引號,-f,-X,-e ...什麼都行不通!任何幫助深表感謝。如何檢查Windows可執行文件的存在?

+0

不應該有任何引號。與使用shell命令的'qx'不同,文件測試需要一個文件名。現在,不確定Windows中有什麼'-X',因爲Windows沒有與Unix相同的權限系統或相同的可執行概念。 – ikegami

回答

3

-f運算符會正常工作,除了你的文件名中有多餘的引號。

當然,所有-f告訴你在Windows上文件存在,而不是一個目錄,但大概是這一切你需要的。

其他double如果路徑中包含空格,則需要將命令行中的引號放在命令行中,但最好在需要它們的地方執行此操作,而不是在更早的時間執行此操作。試試這個:

my $exe = 'C:/Program Files/Common Files/executable.exe'; 

unless (-f $exe) { 
    print "exe file not found"; 
    exit 3; 
} 

my $cmd = qq("$exe" status); 
my @lines = qx($cmd); 
+0

這個技巧。非常感謝! – drwww

相關問題