質問内容
C#のFormのアプリケーション内にて質問の題名通りにbatファイルの呼び出しに改行コードを含めた文字列を引数にして渡したい。
解決したいこと
C#のソース上でbatファイルへの呼び出しの際に引数に改行を含めた文字列を渡す方法が知りたい。
→slack上での確認で改行なしだと、見づらいので、改行して通知の内容を見やすくしたい。
https://www.pg-fl.jp/program/dos/doscmd/str_circumflex.htm
上記のサイトを参考に"^"を加えても改行コードが働いてしまい、正常にbatに引数を渡せなかった。
ソース
C#の呼び出し側のソース
変数(C#のFormのアプリケーションで使用する)
UploadDate.Text:更新する日時
WorkerTextBox.Text:更新作業者
list:List<string>型の変数。更新対象のファイル。
var startInfo = new ProcessStartInfo()
{
FileName = "cmd.exe",
CreateNoWindow = false,
UseShellExecute = false,
Arguments = "/c ",
WorkingDirectory = @path //これがないと正しくバッチが処理しない。
};
startInfo.Arguments += path + "\sendslack.bat ";
startInfo.Arguments += "更新した日時:" + UploadDate.Text ;
startInfo.Arguments += "更新者:" + WorkerTextBox.Text + "^" + "\n";
foreach (string file in list)
{
string name = Path.GetFileName(file);
startInfo.Arguments += name;
}
MessageBox.Show(startInfo.Arguments);
Process process = Process.Start(startInfo);
process.WaitForExit();
sendslack.batのソース
chcp 65001
rem slackへ送信するURL
set URL=https://hooks.slack.com/services/XXXXXXX/YYYYYYYY/ZZZZZZZZ
rem 投稿するメッセージ (改行は\n)
set TEXT=%1%%2%
rem 投稿するチャンネルやメンション(#randomとか @user)
set TO="#ツールの通知窓"
rem 投稿者の名前(この名前のBOTが投稿したように見える)
set FROM="Tool"
rem 投稿アイコン(slackで使える絵文字記号)
set ICON_EMOJI="💻"
rem 送信
rem echo {"text":%TEXT%,"channel":%TO%,"username":%FROM%,"icon_emoji":%ICON_EMOJI%}| nkf -w | curl -k -X POST --data-urlencode payload@- %URL%
echo {"text":%TEXT%,"channel":%TO%,"username":%FROM%,"icon_emoji":%ICON_EMOJI%}| curl -k -X POST --data-urlencode payload@- %URL%
pause > nul
