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)
 }

c#不运行或删除文件

可能发生的情况是,您正在设法删除.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是一次性的东西,忽略结果是一个更糟糕的主意。