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

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

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

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

Q&A

1回答

2411閲覧

C# ProcessStartInfo.ArgumentList と ProcessStartInfo.Arguments の使い分けが知りたい。

退会済みユーザー

退会済みユーザー

総合スコア0

C#

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

0グッド

0クリップ

投稿2022/05/23 08:32

編集2022/05/25 00:53

提示コードですがProcessStartInfo.ArgumentListProcessStartInfo.Arguments の使い分け知りたいです。下記の文章はリファレンスサイトのものを引用したのですがちょっと文章の意味が理解できません。1 つの文字列を 内部的に 構築することですとは結局のところ一つの一列のコマンドを生成しているのではないのでしょうか?提示コードのように同じコマンドの列を試しましたがArgumentListの場合は正常に実行されません。二つは何が違うのでしょうか?またエスケープとはどういう意味なのでしょうか?

実行外部アプリケーション

yt.dlp

ArgumentListArgumentsプロパティは互いに独立しており、 同時 に使用できるのはそのうちの 1 つだけです。 両方の API の主な違いは、 ArgumentList指定された引数をエスケープし、 呼び出Process.Start(info)し時にオペレーティング システムに渡される 1 つの文字列を 内部的に 構築することです。 あなたの引数を適切にエスケープする方法がわからない場合は、上をArguments選択ArgumentListする必要があります.
ERROR: ERROR: [generic] '"https://www.youtube.com/watch?v=P3ANka_yMJs&list=PL6CA81883A4C0A9CD"' is not a valid URL. Set --default-search "ytsearch" (or run yt-dlp "ytsearch:"https://www.youtube.com/watch?v=P3ANka_yMJs&list=PL6CA81883A4C0A9CD"" ) to search YouTube
環境

OS: windows 10
IDE: Visula studio 2022
環境: .Net 6.0

参考サイト

リファレンス: https://docs.microsoft.com/ja-jp/dotnet/api/system.diagnostics.processstartinfo.argumentlist?view=net-6.0

cs

1 2 /* ########################### プレイリストをデータ化 ###########################*/ 3 public List<string> getURL_List(string url) 4 { 5 6 //IDを取得 7 8 9 10 process.OutputDataReceived += this.Output; 11 12 //process.StartInfo.Arguments = "--flat-playlist --ignore-errors --no-warnings --no-check-certificate --get-url " + url + " -o \"%(url)s\" "; 13 14 process.StartInfo.ArgumentList.Add("--flat-playlist "); 15 process.StartInfo.ArgumentList.Add("--ignore-errors "); 16 process.StartInfo.ArgumentList.Add("--no-warnings "); 17 process.StartInfo.ArgumentList.Add("--no-check-certificate "); 18 process.StartInfo.ArgumentList.Add("--get-url "); 19 process.StartInfo.ArgumentList.Add(url); 20 process.StartInfo.ArgumentList.Add("-o" ); 21 process.StartInfo.ArgumentList.Add("\"%(url)s\""); 22 23 24 25 26 27 28 29 30 process.Start(); 31 32 process.BeginOutputReadLine(); 33 process.BeginErrorReadLine(); 34 35 process.WaitForExit(); 36 37 // 使い終わったら止める 38 process.CancelOutputRead(); 39 process.CancelErrorRead(); 40 41 return url_List; 42 }

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

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

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

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

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

guest

回答1

0

コマンドラインでは、スペースが入っているファイル名を引数に与えるときは、両端を「"」でくくる必要がありますが、ProcessStartInfo.ArgumentList プロパティ のリファレンスのサンプルコードにあるように、Arguments プロパティを使うときは必要で、ArgumentList を使うときは不要です。

C#

1 process.StartInfo.ArgumentList.Add("\"%(url)s\"");

の両端の 「\"」 が不要と思われます。

投稿2022/05/24 00:46

KOZ6.0

総合スコア2626

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

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

KOZ6.0

2022/05/25 03:27

プログラムの代わりにバッチファイルを起動するようにして、引数をチェックするとわかるかもしれませんね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問