C#不运行或删除文件

FJa*_*Jam 2 c# batch-file

这个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)
 }
Run Code Online (Sandbox Code Playgroud)

Dav*_*nan 6

可能会发生的是,您正在设法删除.bat文件,然后cmd.exe进程才能读取并处理它.Process.Start在删除文件之前,您需要等待开始的过程完成.像这样:

using (var process = Process.Start(path)) {
    process.WaitForExit();
}
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我想知道为什么你觉得需要在你不应该写的目录中创建.bat文件.您可以在临时目录下轻松创建.bat文件.如果您需要将工作目录作为其他目录,则可以在启动该过程时轻松指定.

  • 是的,但您不需要在那里创建.bat文件来执行此操作.只需使进程将该目录作为其工作目录即可. (2认同)