- ベストアンサー
Perlのsystem関数を使ってフォルダを引数に指定する方法について
- Perlのsystem関数を使用してコマンドを実行する際、引数にフォルダを指定すると正常に動作しない場合があります。
- 実行ファイルは.BATファイルであり、指定したフォルダには複数のテキストファイルが含まれています。
- 手動でドラッグ&ドロップすると正常に動作するため、引数にフォルダを指定できない場合の解決策はありますか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> しかしブラウザに (略) > が表示されてしまいます。 それは、バッチファイルが出力したものでしょう。 バッチファイルが出力したものも、CGIの出力に混ざってしまいます。 Perl側で対応する場合は、 system '… > nul' としてください。 あるいは、バッチファイル側で、1行目に @echo off という行を追加してもいけるかと思います。
その他の回答 (1)
- mtaka2
- ベストアンサー率73% (867/1179)
その対象となる「フォルダ」の実際の名前には、空白などは入っていませんか? スペースはコマンドライン引数の区切り文字になるため、それをそのまま指定するとあるフォルダという一つの引数のはずが、分断された複数の引数と解釈されてしまいます。 そういう場合は、 system '実行ファイル "フォルダ"'; もしくは system "実行ファイル \"フォルダ\""; のように、ダブルクオートで括ってみてください。 (エクスプローラからドラッグドロップでフォルダやファイルなどを指定した場合なんかでは、引数には自動的にダブルクオートが付加されます)
補足
回答ありがとうございます。 system '実行ファイル フォルダ';のようにしたら動作しました! しかしブラウザに C:\VMwareProgram\Apache Software Foundation\Apache2.2\htdocs\lab\termmi>call localsetting.bat C:\VMwareProgram\Apache Software Foundation\Apache2.2\htdocs\lab\termmi>PATH=C:\usr\bin\; C:\VMwareProgram\Apache Software Foundation\Apache2.2\htdocs\lab\termmi>PATH=C:\VMwareProgram\Apache Software Foundation\Apache2.2\htdocs\lab\MeCab\bin\;C:\usr\bin\; C:\VMwareProgram\Apache Software ~以下似たようなものが数行~~~ が表示されてしまいます。 print文は print OUT $str; のみのはずなのですが、 system関数の使用なのでしょうか?
補足
system '… > nul' と記述したところ 無事邪魔な出力を消すことができました。 mtaka2様、回答ありがとうございました!