我有一個Perl腳本使用反引號在Windows上調用程序。當我在命令提示符下運行它時,它工作正常。當我使用Windows任務調度器運行它時,它停止工作。這是在Windows Server 2008 x64上使用ActiveState Perl。它給我一個錯誤不被識別爲內部或外部命令,可操作程序或批處理文件。一旦我改變了對程序的調用以指向程序的完整路徑,它就會再次運行。通過Windows任務計劃程序運行的Perl腳本產生的進程無權訪問%PATH%
因此,當它在帶反引號的任務計劃中運行時,會阻止它看到Windows環境變量,特別是運行時的%PATH%變量。反引號產生的shell可能缺少某些東西?我應該使用不同的命令來執行系統調用嗎?或者是否有任務計劃程序設置可以解決此問題?如果任何人都可以協助,我將不勝感激。
說實話,我的環境比這更復雜,但這是我縮小到的範圍。我實際上有一個批處理文件的任務計劃,該文件運行一個php腳本,該腳本本身運行perl腳本,然後運行該程序。我之前沒有提到的其他堆棧似乎可以訪問%PATH%,所以批處理文件運行'php ...',php腳本運行'perl ...',然後perl腳本失敗當使用反引號運行'程序名'時。我剝離了批處理文件和php腳本,行爲仍然只存在於任務計劃程序和perl中。
獲取你的Perl腳本來運行'路徑> C:\在同樣的情況下logfile.txt',這樣就可以看到什麼路徑設置爲。 –
三通。[Unix的人總是有這樣的問題](http://stackoverflow.com/questions/6141708/shell-script-runs-from-command-line-not-cron) – mob
@mob Unix或不,我希望人們誰擁有一個計劃任務開始的地方*一個運行php腳本的批處理文件,它本身運行Perl腳本*?說真的,嗨?這裏有很多動人的東西都有waaaayyy。 –