C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ツリー一括表示

C#からBatファイルに引数を渡す /tera (20/12/06(Sun) 19:48) #96519
Re[1]: C#からBatファイルに引数を渡す /Hongliang (20/12/06(Sun) 21:29) #96524
  └ Re[2]: C#からBatファイルに引数を渡す /tera (20/12/06(Sun) 22:48) #96525 解決済み


親記事 / ▼[ 96524 ]
■96519 / 親階層)  C#からBatファイルに引数を渡す
□投稿者/ tera (1回)-(2020/12/06(Sun) 19:48:21)

分類:[.NET 全般] 

【Batファイルの中身】
echo %1
pause

【C#の中身】
string arg = @"""aa bb""";
var process = new Process
{
StartInfo ={
FileName = @"C:\test.bat",
Arguments = arg,
Verb = "RunAs",
UseShellExecute = true,
}
};
process.Start();


argはスペースを含むパスが入る予定でその内容をechoで表示するだけの簡単なプログラムなのですが動作しません。

上記のC#にて以下の変更を一つでも加えると動作し始めます。
・argを@"aa bb"にする
・「Verb」の行をコメントアウト
・「UseShellExecute」の行をコメントアウト

原因が分かる方いらっしゃいましたら是非ご教授ください。
[ □ Tree ] 返信 編集キー/

▲[ 96519 ] / ▼[ 96525 ]
■96524 / 1階層)  Re[1]: C#からBatファイルに引数を渡す
□投稿者/ Hongliang (1131回)-(2020/12/06(Sun) 21:29:35)
実際にcmd.exeに渡されてる引数を見てみましたが、特に問題はなさそうなんですけどねえ。
// regeditでbatfileのrunasの設定の/Cを/Kに変えて確認してみた。

回避方法としては、
.FileName = "cmd"
.Arguments = @"/C call ""c:\\test.bat"" ""a b""";
みたいな感じで直接cmdを実行するのはどうでしょうか。
[ 親 96519 / □ Tree ] 返信 編集キー/

▲[ 96524 ] / 返信無し
■96525 / 2階層)  Re[2]: C#からBatファイルに引数を渡す
□投稿者/ tera (2回)-(2020/12/06(Sun) 22:48:14)
早速の回答ありがとうございます。

原因が分からないのがモヤモヤしますが、回避方法を試したところ問題なく動作しました。
提案頂いた方法でやりたかったことが実装できると思いますので「解決済み」とさせていただきます。

ありがとうございました!
解決済み
[ 親 96519 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -