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

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

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

C#からBatファイルに引数を渡す

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■96519 / inTopicNo.1)  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」の行をコメントアウト

原因が分かる方いらっしゃいましたら是非ご教授ください。
引用返信 編集キー/
■96524 / inTopicNo.2)  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を実行するのはどうでしょうか。
引用返信 編集キー/
■96525 / inTopicNo.3)  Re[2]: C#からBatファイルに引数を渡す
□投稿者/ tera (2回)-(2020/12/06(Sun) 22:48:14)
早速の回答ありがとうございます。

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

ありがとうございました!
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ