【问题标题】:System.Diagnostics.Process - Del CommandSystem.Diagnostics.Process - Del 命令
【发布时间】:2010-03-29 14:56:12
【问题描述】:

我正在尝试使用 System.Diagnostic.Process 启动 del 命令。基本上我想从 C:\ 驱动器中删除文件名为 *.bat 的所有内容

System.Diagnostics.Process proc = new System.Diagnostics.Process();
string args = string.Empty;
args += "*.bat";

proc.StartInfo.FileName = "del";
proc.StartInfo.WorkingDirectory = "C:\\";
proc.StartInfo.Arguments = args.TrimEnd();
proc.Start();

但是,当运行代码时会抛出异常,“系统找不到指定的文件”。我知道该根文件夹中肯定有包含该文件扩展名的文件。

【问题讨论】:

    标签: c# .net cmd


    【解决方案1】:

    “del”不是可执行文件。它是由命令解释器 cmd.exe 运行的命令。不要运行“del”,而是运行cmd.exe /c "del foo.txt"

    【讨论】:

    • 有趣,如果我找不到 .Net 功能,我会记住这一点以用于其他控制台命令。
    • cmd.exe /c 在您想从 Process 类运行批处理文件时也很有用。
    【解决方案2】:

    您不需要启动 del 命令。您可以从 C# 中删除文件。

            var files = new DirectoryInfo("C:\\").GetFiles("*.bat");
            foreach (FileInfo fi in files)
            {
                fi.Delete();
            }
    

    【讨论】:

    • 我正在使用 io 和其他一些方法,但在 UAC 和用户配置文件之外的权限方面存在问题。如果我将清单更改为以管理员身份执行,那么它将无法正确检测当前登录的用户以执行我需要执行的任务。
    【解决方案3】:

    del 是一个控制台命令,而不是可以通过Process 类启动的应用程序。您是否有理由这样做,而不是使用 System.IO 命名空间中的托管类?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-30
      • 2020-01-25
      • 2017-08-14
      • 2010-10-25
      • 2011-01-28
      • 2015-12-22
      • 1970-01-01
      • 2018-06-25
      相关资源
      最近更新 更多