大家好,這是我第一次發文
想請問一個問題,我是自學C#,目前還在努力中
最近我有幫別人寫一個小工具,可以用來產生批次匯入工作排程的bat
但是由於他手上的系統比較舊,在他電腦上產生bat時會出現中文的排程亂碼問題
目前來說只要將bat重新用Big5儲存就好,我想詢問我可以怎麼做去做到儲存成Big5?
或是依照對方電腦去設定預設儲存的格式嗎?
程式不是我原創,是google後東拼西湊而成,所以有些概念可能不是很熟悉
希望能得到一些幫助
謝謝
static void Main(string[] args)
{
// StreamReader file = new StreamReader(@"C:\Temp\Run.bat", Encoding.Default);
string path = @"C:\Temp\Run.bat";
DirectoryInfo di = new DirectoryInfo(@"C:\Temp\");
FileInfo[] files = di.GetFiles("*xml");
using (StreamWriter sr = File.AppendText(path))
{
sr.WriteLine("cd %~dp0");
}
for (int i = 0; i < files.Length; i++)
{
//Stream可以持續存入字串而不會覆蓋
using (StreamWriter sr = File.AppendText(path))
{
//此段落可以組合出schtasks.exe /Create /XML "test.xml" /tn "test" 的排程名稱。
//Path.GetFileNameWithoutExtension用來無視附檔名,files[i].ToString()則是強制轉字串,否則無法編譯
sr.WriteLine("schtasks.exe /Create /XML " + '"' + files[i] + '"' + " /tn " + '"' + Path.GetFileNameWithoutExtension(files[i].ToString()) + '"');
}
}
using (StreamWriter sr = File.AppendText(path))
{
sr.WriteLine("pause");
}
}
圖片補充:
後來也有找到另一個方法,可以增加可用性
那就是我直接在生成的CMD中放入編碼更改
User自己可以自由的輸入自己系統能用的編碼,這樣子不管誰去使用,都不會有問題了
謝謝大家的幫忙
string path = @"D:\Temp\Run.bat";
FileStream fs = new FileStream(path, FileMode.Append, FileAccess.Write);
StreamWriter sw = new StreamWriter(fs, Encoding.GetEncoding("big5"));
for (int i = 1; i < 6; i++)
{
sw.WriteLine("現在時間是:" + DateTime.Now.AddMinutes(i));
sw.WriteLine(Environment.NewLine);
}
sw.WriteLine("pause");
sw.Flush();
sw.Close();
fs.Close();