Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从C调用批处理文件#_C#_Cmd - Fatal编程技术网

C# 从C调用批处理文件#

C# 从C调用批处理文件#,c#,cmd,C#,Cmd,我希望这是一个简单的问题,但我的C#应用程序中有以下代码,出于某种原因,它不会执行我指向的批处理文件 private void filesystemwatcher_Renamed(object sender, System.IO.RenamedEventArgs e) { if (File.Exists("C:\\Watcher\\File.txt")) { System.Diagnostics.Process proc = new System.Diagnost

我希望这是一个简单的问题,但我的C#应用程序中有以下代码,出于某种原因,它不会执行我指向的批处理文件

private void filesystemwatcher_Renamed(object sender, System.IO.RenamedEventArgs e)
{
    if (File.Exists("C:\\Watcher\\File.txt"))
    {
        System.Diagnostics.Process proc = new System.Diagnostics.Process();
        proc.EnableRaisingEvents = false;
        proc.StartInfo.FileName = "C:\\Watcher\\Cleanup.bat";
        proc.Start();
        MessageBox.Show("Cleaned up files, your welcome.");

    }
    else
    {
        label4.Text = "Error: No file found";
    }
}
它将正确显示messagebox,因此我知道它正在到达该代码区域,但我没有看到出现cmd框或任何显示它刚刚运行批处理文件的内容。我也可以说,因为cleanup.bat只是重命名了一个文件,仅此而已。在我得到消息框后,文件名没有改变


如果我手动双击批处理文件,它可以正常工作。我还将批处理文件的权限调整为对所有人的完全控制(仅用于测试目的)

尝试将
proc.StartInfo.UseShellExecute
设置为
true
;这会告诉操作系统执行文件扩展名的查找,以便在注册表中找到正确的处理程序。

这应该会起作用

System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo.FileName = "C:\\Watcher\\Cleanup.bat";
proc.StartInfo.WorkingDirectory = "C:\\Watcher";
proc.Start();
您需要设置WorkingDirectory,否则该命令将在调用应用程序的当前目录中执行