- ベストアンサー
あるプログラムのコマンドライン引数を調べる方法について
趣味的な質問で申し訳ありません。 あるひとつのプログラムがあるとします。 普通に実行させるだけでも起動しますが、ある引数を与えると 異なる動作をするプログラムだとします。 引数が必要だという以外、何もわからない状態で、どのような 引数を与えればよいのか調べる方法を、ご存知でしたらご教授ください。 なお、aから順に直接入力というのはすでに試行済みです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
もはや誰が作ったのかも分からないプログラムの引数を調べたい、ということですよね。 わたしなら、かなりダメモトな方法ですが、次の手順で調べます。 1. ヘルプ表示をトライ 気の利いた人だと、-help などのオプションを付けるとヘルプを表示するように作っています。なのでとりあえず、-help、--help、-?、-l、--usage あたりを試してみます。 2. バイナリエディタで開いてテキストを探す とても乱暴ですが、最後の手段としてはそれなりに有効です。UNIX系のOSだと strings というコマンドを使えば、バイナリエディタで開かなくてもテキスト(っぽいもの)を抽出してくれます。 あとは何とかしてソースプログラムを探す、とか。でも、それができるくらいなら苦労してないんですよね、きっと…。
その他の回答 (3)
いまいち質問の意味がつかめかねますが、、 マニュアル、ヘルプを見るのがよいかと思います。 ヘルプにないなら windows では >[comand] /? >[comand] /? >[comand] /help >[comand] /h Unix系では $[comando] -help $[comando] -? あたりを試してみては?
補足
早速のご回答、ありがとうございます。 今回の場合は、フリーのプログラムを自由に使用するといった 感じのため、ご回答いただいたようなヘルプ機能は一切 ありません。 下記のvaio09様にも補足をさせていただいたのですが、 ほぼフリーのプログラムの扱いになります。 よろしくお願いいたします。
- vaio09
- ベストアンサー率37% (756/2018)
たいてい、-H / -Help / -? / 任意文字列 でガイダンス表示機能を持たせるのが常道ですから、これらから情報を収集するしかないでしょう。 逆に言うと、ガイダンスが存在しないコマンドは、手抜きまたは個人で利用するためのコマンドとなるでしょう。
補足
早速のご回答、ありがとうございます。 今回の場合は、フリーのプログラムを自由に使用するといった 感じのため、ご回答いただいたようなヘルプ機能は一切 ありません。 お察しのとおり、手抜きか公開されていないだけの引数と いったものを調べようとしています。
- ぜ り~(@-Jelly-)
- ベストアンサー率34% (132/383)
その言語が何だか分からないと調べようがないです。 答えようもないです。 プログラムには一般的に宣言型が存在します INTEGERとかNUMBERとかかいてあれば数字、 万が一 PIC 9(10)とか書いてあれば10桁の数字です。 CHARAとかかいてあれば英数字です。 桁数まで指定するプログラム言語は数少ないですので、 何文字何桁なのかは分かりません。 その宣言から文字列型の予測はつけられます。 まず引数の宣言型があったら、それが一つ。 あとは、プログラム中でその引数をつかってどんな処理をしているのか見ることです。 DAY(引数)みたいな使いかたしてるなら、 引数は日付だと分かるでしょう。 B = 引数 + A とかだったら数字なのかな、と思うでしょう。 そのぐらいしか分からないかと
補足
早速のご回答、ありがとうございます。 私の説明が不足しており、大変申し訳ありません。 今回の件は、個人の作ったフリーのプログラムを、 個人が自由に使う…といったケースに挙げられます。 そのため、言語や環境などといった説明や、マニュアル、 helpなどの引数で詳細を確認する…といったものは一切 ないものと言う場合です。 このような場合に、自力でどのようなコマンドライン引数が あるのかを調べる方法の調査をお願いしています。 よろしくお願いいたします。
補足
早速のご回答、ありがとうございます。 まさに、Rayderl様のお察しのとおり、ほぼだれが作ったか わからないようなプログラムになります。 そのため、1の方法は初めから存在すらしておらず、 2の方法も、試してみたのですが、サイズばかり大きいため、 そこから解析していられず、途方にくれております。 自分でコードを組んで、0から、あるいはaから順番に 引数を渡して実行する…という方法も試しているのですが、 少し現実的ではないため、もっとエレガントな方法が あればと思い、質問させていただいております。 よろしくお願いいたします。