人に聞けない痔の悩み、これでスッキリ >>

いつもお世話になります。


現在、jperlを使用し、
あるフォルダ内の中にあるサブフォルダをlaplusを使用し
コマンドラインから圧縮をかけるというスクリプトを作成しております。

そこで、下記ロジックを実行するとエラーになります。

【ロジック】
 $cmd = "\"c:\\Program Files\\Lhaplus\\Lhaplus.exe\" /c:lzh
  o:\"C:\\Users\\testtaro\\Documents\\LAPLUS_TEST\"
  \"C:\\Users\\testtaro\\Documents\\LAPLUS_TEST\\2011-03-11(0100)\"";

 system($cmd);


【エラーメッセージ】
 'c:\Program' は、内部コマンドまたは外部コマンド、
 操作可能なプログラムまたはバッチ ファイルとして認識されていません。

「$cmd 」の内容をデバック出力しそれを直接コマンドプロンプトで実行すると
正常に圧縮されます。

おそらく「Program Files」の半角スペース内で切れてしまっているのだと思いますが、
ダブルクォテーションでくくるやり方が間違っているのでしょうか。

超初心者の質問で大変申し訳ありませんが宜しくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

可能なら新しい今時のperlを使いましょう。



今ちょっと昔のjperlを発掘して試して見ましたが、
---
C:\> jperl -v
This is jperl, version 4.036 + 1.4(WIN32, SJIS) May 25 1996
---
このjperlだと「'c:\Program' は、内部コマンド…」エラーになりましたが、

---
C:\> perl -v

This is perl, v5.8.7 built for MSWin32-x86-multi-thread
---
こちらのperlだと、C:\Program Files 以下のプログラムも問題無く system で実行できました。
(使ったのはActivePerlです。Windows用のインストーラがあるので簡単にインストールできます。
http://www.google.co.jp/search?q=ActivePerl&lr=l …


なお、どうしても jperl で動かす必要があるのなら、
>$cmd = "c:\\Progra~1\\Lhaplus\\Lhaplus.exe /c…
で実行は可能だと思います。
    • good
    • 0
この回答へのお礼

ありがとうございました!

引き継いだものをそのまま使い続けていたため
最新バージョンにするというステップを失念していました。

早速試してみます!

お礼日時:2011/03/25 14:43

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qコマンドプロンプトからperlを実行できません

エディターで作成した者を、ex1.plとtxt形式で保存し、それをコマンドプロンプトでperl ex1.plとやってもCan't open perl script;No such file or directory と出てきてしまいます。
この原因は、何なのでしょうか?
ちなみに、コマンドプロンプトでやるとperl -vと打ちEnterを押すときちんとバージョン情報が出るので、ダウンロードはできていると思います。
ダウンロードしたのは、Active perl 5.8.7Build813で、現在XPを使っています。
プログラミング初心者なので、わかりにくい文章で申し訳ないですが、教えて下さい。

Aベストアンサー

コマンドプロンプトを開いた状態ではカレントディレクトリにex1.plが無いからでは
ないでしょうか?
コマンドプロンプトで"dir"と打ってex1.plがあるかどうか確認してください。

多分無いと思いますので、ex1.plのファイルを作成したディレクトリまで
移動するかもしくは以下のようにディレクトリの指定をしてください。
perl <ex1.plのあるディレクトリ>\ex1.pl

例:ex1.plのファイルがC:\workにあった場合
perl c:\work\ex1.pl


人気Q&Aランキング