バックティックを使用してWindows上のプログラムを呼び出すPerlスクリプトがあります。コマンドプロンプトで実行すると正常に動作します。Windowsタスクスケジューラを使用して実行すると動作を停止します。これは、ActiveStatePerlを搭載したWindowsServer2008x64上にあります。内部または外部コマンド、操作可能なプログラム、またはバッチファイルとして認識されないエラーが発生します。プログラムへの呼び出しを変更して、プログラムのフルパスを指すようにすると、プログラムは再び機能します。
したがって、バッククォートを使用してタスクスケジュールで実行すると、Windowsの環境変数、特に実行時に%PATH%変数が表示されなくなります。バックティックによって生成されたシェルから何かが欠落している可能性がありますか?システムコールを実行するために別のコマンドを使用する必要がありますか?または、これを解決するタスクスケジューラ設定はありますか?誰かが助けてくれるなら、私はそれをいただければ幸いです。
正直なところ、私の環境はこれよりも複雑ですが、これが私が絞り込んだものです。私は実際に、プログラムを実行するperlスクリプトを実行するphpスクリプトを実行するバッチファイルを含むタスクスケジュールを持っています。以前に言及しなかったスタックの残りの部分は%PATH%にアクセスできるようです。そのため、バッチファイルは「php ...」を実行し、phpスクリプトは「perl ...」を実行します。その後、perlスクリプトは失敗します。バッククォートを使用して「programname」を実行する場合。バッチファイルとphpスクリプトを削除しましたが、タスクスケジューラとperlだけで動作が持続します。