質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

コマンドライン

コマンドライン(別名:Command Line Interface)は、ユーザに命令の入力を促す(プロンプト)文字列の表示を行い、すべての操作をキーボードを用いて文字列を打ち込む事でプログラムを走らせるユーザインターフェースです。

Q&A

2回答

4021閲覧

コマンドライン引数を設定して、実行する方法がわかりません。

jackl

総合スコア8

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

コマンドライン

コマンドライン(別名:Command Line Interface)は、ユーザに命令の入力を促す(プロンプト)文字列の表示を行い、すべての操作をキーボードを用いて文字列を打ち込む事でプログラムを走らせるユーザインターフェースです。

0グッド

0クリップ

投稿2019/02/17 01:49

static void Main(string[] args)
のコマンドライン引数の役割が知りたいと思います。
このプログラムの1つ目の役割は、プログラムの開始部分のメソッドということは理解しています。ただ、コマンドライン引数がなぜ必要か分からなかったので、argsの引数に設定した上で、以下のプログラムの実行をしたいと思っています。Visual Studio上で、ファイル名はProgram.csです。
Console.WriteLine(args.Length);

引数を
aaa bbb ccc ddd
とします。

①コマンドライン引数は、「プログラム名の後に続けて入力した文字列」とのことでしたので、ターミナル上で、「Program.csのパス aaa bbb ccc ddd」と打ったのですが、コマンドが見つからないということでしたが、実行コマンドがわかりません。

②コマンドライン引数のargsを設定する時、以下のtest.rtfのファイルを作りました。
test aaa bbb ccc ddd

このファイルとProgram.csをどう関連付けさせて、ターミナルにコマンドライン引数の要素の「4」を出せれば良いのでしょうか?

以下を参考にしています。
https://ufcpp.net/study/csharp/st_command.html

①と②のどちらかで、解法があれば教えていただけると助かります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

①と②のどちらかで、解法があれば教えていただけると助かります。

何を解決したいのかよくわかりませんが、コンソールアプリであれば、Visual Studio でこのように設定して、

イメージ説明

実行すれば、Console.WriteLine(args.Length); の結果は以下の一行目のように表示されます。まずそれを試してみてください。

イメージ説明

これは実際にコマンドプロンプトから <exe ファイル名> aaa bbb ccc ddd と入力して実行させたのと同じです。もちろん、コマンドラインから実行するには exe ファイルへのパスが通ってなければダメですが。

【追記】

①コマンドライン引数は、「プログラム名の後に続けて入力した文字列」とのことでしたので、ターミナル上で、「Program.csのパス aaa bbb ccc ddd」と打ったのですが、

「プログラム名」即ち私の上のレスで言う <exe ファイル名> は Program.cs ではありません、Visual Studio でコンソールアプリを作ると、デフォルトでは「プロジェクト名.exe」になって、以下のフォルダに生成されます。

イメージ説明

投稿2019/02/17 02:20

編集2019/02/17 02:41
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jackl

2019/02/17 11:49

先ほどまで、Macでやっていて、コマンドライン引数を設定する場所がわかりませんでした。 windows10でやったら、ちゃんとでてきました。しかし、デバッグしても、 'ConsoleApp1.exe' (CLR v4.0.30319: DefaultDomain): 'C:\Windows\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll' が読み込まれました。シンボルの読み込みをスキップしました。モジュールは最適化されていて、デバッグ オプションの [マイ コードのみ] 設定が有効になっています。 'ConsoleApp1.exe' (CLR v4.0.30319: DefaultDomain): 'C:\Users\~\source\repos\ConsoleApp1\ConsoleApp1\bin\Debug\ConsoleApp1.exe' が読み込まれました。シンボルが読み込まれました。 プログラム '[24048] ConsoleApp1.exe' はコード 0 (0x0) で終了しました。 と表示されるだけです。 そもそもコマンドプロンプトに表示できていません。。。macではターミナルに結果が返ってきましたが。
pepperleaf

2019/02/17 13:10

Macもコンソール無かった? 実行プログラムがある場所に移動して、そこで、実行すれば? 今のMacだと、Unix系らしいので、拡張子があるかどうかは知りませんが、、。 (Unixだと、指定無しで、a.out で普通はファイル名そのままだったかかと。)
退会済みユーザー

退会済みユーザー

2019/02/17 14:24

mac でやってるなら、最初の質問の一行目にそれを書くべきです。そうしてもらえていたら自分はこの質問はスルーしてます。時間と労力の無駄でした。
guest

0

え?
C#ってコンパイルしませんか?
するなら csファイルじゃなくて exeファイルのほうですよ。

①コマンドライン引数は、「プログラム名の後に続けて入力した文字列」とのことでしたので、ターミナル上で、「Program.csのパス aaa bbb ccc ddd」と打ったのですが、コマンドが見つからないということでしたが、実行コマンドがわかりません。

とありますが、もしかして、

C:/(~略~)/Desktop がカレントディレクトリになっているのに、

D:/csharp/project1 のProgram.cs ってのを開こうとしているとか? (しかもパスじゃなくてファイル名を渡しただけとか)

カレントディレクトリを同じにしてみてください。

参考1

っていうか、質問の参考資料に

以下のようにして(ただし、test.exeという名前で作成した実行ファイルを作成したとします) 実行すると、

(from コマンドライン引数 - C# によるプログラミング入門 | ++C++; // 未確認飛行 C )

とありますが。

todo:

  • 実行ファイルのパスとカレントディレクトリのパスを確認すること
  • 拡張子を確認すること

[追記1]

コマンドライン引数は、そのソフトに汎用性を持たせるためのものです。

GUI (Graphical User Interface) なら 視覚的に操作できるので、問題はなさそうですが、
CUI (Character User Interface) の場合、プログラムがデータを決めることになります。

汎用性がないので、コマンドプロンプトで起動するときに 情報を渡して起動する。

これのためのものです。

Windowsのコマンドプロンプトだと CDコマンドがありますよね?

これを

CD

とだけ打つと現在のディレクトリ ( カレントディレクトリ ) が表示される。

例:

C:/testProjects> CD C:/testProjects C:/testProjects>

でもこれに ディレクトリ名かディレクトリパスを渡すとその場所に行く( カレントディレクトリの変更 )。

例:

C:/testProjects> CD csharpCodes C:/testProjects> CD javaCodes 指定されたパスが見つかりません。

DIRコマンドもそうですね。

C:/testProjects> DIR rem ここに一覧表示 C:/testProjects> DIR *project1* /S /B rem ここに"project1" を含むパスの一覧を表示

参考: 「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典


[追記2]

そうそう、忘れてた。

ドライブ( C: とか ) から開始するようなパスを絶対パス、カレントディレクトリから見たパスを相対パス と言います。

詳しくは検索してみてください。

投稿2019/02/17 02:47

編集2019/02/17 03:24
BeatStar

総合スコア4958

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問