为什么“1.bat”无法成功运行?任何帮助将不胜感激。 “1.bat”已成功创建。它可以无错误地运行,但无法重命名文件。
private void button1_Click(object sender, EventArgs e)
{
string str = System.Environment.CurrentDirectory;
str += "\\1.bat";
string txt = "";
txt = "ren *.mp3 *.wav";
StreamWriter sw = new StreamWriter(str,false, Encoding.UTF8);
sw.Write(txt);
sw.Close();
Process p = new Process();
p.StartInfo.FileName = str;
p.StartInfo.Arguments = "";
p.StartInfo.UseShellExecute = false;
p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
p.Start();
}
答案 0 :(得分:5)
一个问题是您的文件是使用UTF-8 BOM编写的。尝试通过Encoding.Default
来测试一下。或者通过new UTF8Encoding(false)
作为编码来传递省略BOM的UTF-8编码。
另一个问题(您刚刚在编辑中添加)是您将UseShellExecute
设置为false
。这要求您传递的文件是可执行文件。你的档案不是。您需要UseShellExecute
为true
才能让shell了解如何处理您的.bat
文件。
另一个可能的问题是当前目录可能不是你想象的那样。
当面对这样的问题时,根本不需要无助。做一些调试。在批处理文件的末尾添加pause
,并确保可以看到控制台。您将立即发现问题所在。学习如何调试与学习如何编程一样重要。在你能做到前者之前,你不可能做到后者。
如果我不得不这样做,通过外部流程,我会:
UseShellExecute
设为false
。cmd.exe
作为可执行文件传递。但是,使用C#直接执行此操作要容易得多,因此避免必须启动外部进程。