c#不运行或删除文件
本文关键字:删除 文件 运行 | 更新日期: 2023-09-27 18:17:43
这个c#程序生成一个批处理文件,然后运行它,然后应该删除该文件。当我运行程序时,如果最后一个if语句不在那里,它会生成批处理文件并完美地执行它。但是对于最后一个if语句,它创建文件并删除它,但不做任何更改。
string batFile;
batFile = genBat(textBox1.Text);
string path = "C:''Windows''System32''drivers''etc''blocksite.bat";
using (StreamWriter sw = new StreamWriter(path))
{
sw.WriteLine(@batFile);
sw.Close();
}
Process.Start(path);
if(File.Exists(path))
{
File.Delete(path)
}
可能发生的情况是,您正在设法删除.bat文件之前,cmd.exe
进程可以读取和处理它。在删除文件之前,您需要等待以Process.Start
开始的进程完成。这样的:
using (var process = Process.Start(path)) {
process.WaitForExit();
}
作为题外话,我想知道为什么您觉得需要在不应该写入的目录中创建.bat文件。您可以很容易地在临时目录下创建.bat文件。如果您需要将工作目录设置为另一个目录,那么您可以在启动进程时轻松指定。
很有可能在进程实际开始处理之前删除了文件。您应该存储Process.Start
返回的Process
(作为一般规则,您不应该忽略。net中操作的返回结果),并使用WaitForExit
,并然后删除文件。
using (var process = Process.Start(path)) {
process.WaitForExit();
}
请记住,Process
是一次性的东西,忽略结果是一个更糟糕的主意。