我想從我的perl腳本運行一個exe,它不在我的perlscript所在的同一目錄中。以及該目錄不在系統PATH中。如何設置perl本身的路徑並運行該exe文件。 我試圖設置env,但它沒有工作。如何運行另一個目錄中的exe文件!
日Thnx, KAS
我想從我的perl腳本運行一個exe,它不在我的perlscript所在的同一目錄中。以及該目錄不在系統PATH中。如何設置perl本身的路徑並運行該exe文件。 我試圖設置env,但它沒有工作。如何運行另一個目錄中的exe文件!
日Thnx, KAS
嘗試使用您的exe文件的完整路徑。例如
system("/full/path/to/app.exe");
你有沒有設置你的路徑是這樣的:
爲了讓您的PATH:
$path = $ENV{'PATH'};
要設置:
$ENV{'PATH'} = 'some/dir:another/dir';
如果你知道在哪裏的exe文件,就像使用命令行運行它一樣,使用它的路徑。在Perl:
system('c:\full\path\to\exe\program.exe');
,或者如果你喜歡用斜槓(他們都是一樣的Windows內核):
system('c:/full/path/to/exe/program.exe');
這裏的問題有點不同:說exe exe是我想運行的文件,a.exe取決於不同的路徑上的庫的幾個。每次我安裝a.exe那些庫路徑也得到change.So我的目的是在設置a.exe路徑之前設置這些路徑。現在wheni說$ ENV {PATH} =「a.exe的依賴庫路徑」:「a.exe的路徑」當我調用系統命令時,它不起作用。當系統命令產生一個shell並運行a.exe時,系統命令之前沒有得到我在父系統中設置的所有路徑。有沒有辦法做到這一點? –
你應該不需要設置任何環境變量只是運行一個exe。所有你需要做的就是使用它的絕對路徑或相對於執行perl腳本時所在目錄的路徑來運行exe。例如,假設這是由於Windows(因爲你在談論一個exe),如果你有一個目錄結構,如:
C:
- dira
| - a.exe
- dirb
- dirc
- a.pl
,並在命令提示符您正在運行:
C:\dirb>perl dirc\a.pl
然後在您的perl文件,你應該使用
`C:\\dira\\a.exe`;
或
`..\\dira\\a.exe`;
如果你的命令提示符:
C:\dirb\dirc>perl a.pl
那麼你可以使用
`C:\\dira\\a.exe`;
或
`..\\..\\dira\\a.exe`;
更新
文件test.pl:
$ENV{'PATH'}.= ':some/dir';
system('./testpath.pl');
文件testpath.pl:
open(FILE, '>>output.txt');
print FILE $ENV{'PATH'};
close(FILE);
單個正斜槓的工作方式與目錄分隔符一樣,並且讀取比反斜槓更好。 – daxim
@daxim,我覺得或者沒問題,但我太懶了,不能確定^^。 – jswolf19
問題在這裏有點不同:說exe exe是我想運行的文件,a.exe取決於幾個不同的路徑上的庫。每次我安裝a.exe這些庫路徑也得到change.So我的目的是在設置a.exe路徑之前設置這些路徑。現在wheni說$ ENV {PATH} =「a.exe的依賴庫路徑」:「a.exe的路徑」當我調用系統命令時,它不起作用。當系統命令產生一個shell並運行a.exe時,系統命令之前沒有得到我在父系統中設置的所有路徑。有沒有辦法做到這一點? –
我這個標記與Windows,正如你所提到的「EXE」 - 請隨時如果你沒有實際使用DOS更恰當地重新標記/視窗。爲了將來的參考,提供你正在使用的平臺/操作系統等是一個好主意,並相應地加上標籤,除非它確實是一個平臺不可知的問題。 –