プロが教える店舗&オフィスのセキュリティ対策術

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


現在、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」の半角スペース内で切れてしまっているのだと思いますが、
ダブルクォテーションでくくるやり方が間違っているのでしょうか。

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

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が見つからない時は、教えて!gooで質問しましょう!