.net 在Windows应用程序中包括.bat文件或.exe文件

.net 在Windows应用程序中包括.bat文件或.exe文件,.net,batch-file,exe,.net,Batch File,Exe,我正在做一个项目,其中包括一个已经完成的程序 它有一个.bat文件和一个.exe文件 现在,已完成的程序流位于文件夹“X”中,其中有许多文件,包括 是一个.tcl文件 是一个.exe文件 是一个.bat文件 现在,当我单击.exe文件时,它会打开一个对话框,我必须在其中选择上面提到的.tcl文件,然后程序执行 现在,当我执行.bat文件时,程序会自动执行 现在的问题是所有文件都在同一个文件夹中。如果我将.bat文件或.exe文件保留在文件夹“X”之外,我已经完成的程序将不会执行 现在我正在做一个

我正在做一个项目,其中包括一个已经完成的程序

它有一个.bat文件和一个.exe文件

现在,已完成的程序流位于文件夹“X”中,其中有许多文件,包括

  • 是一个.tcl文件
  • 是一个.exe文件
  • 是一个.bat文件
  • 现在,当我单击.exe文件时,它会打开一个对话框,我必须在其中选择上面提到的.tcl文件,然后程序执行

    现在,当我执行.bat文件时,程序会自动执行

    现在的问题是所有文件都在同一个文件夹中。如果我将.bat文件或.exe文件保留在文件夹“X”之外,我已经完成的程序将不会执行

    现在我正在做一个项目,我不得不称之为“已经完成”项目

    我正在调用.bat文件或.exe文件。在程序内部使用

    Process.Start(@"E:\X\abc.exe");
    

    但是我的程序没有执行

    所以我在我的项目中添加了整个文件夹“X”,并尝试了这个方法

    Process.Start(@"E:\Project\X\abc.exe");
    

    where project是保存我的项目的文件夹。另请注意,我正在使用windows应用程序

    两种方式我都得不到结果

    我已保留按钮单击事件的process.start

    在按钮点击过程中,如果我有

    Process.Start(@"E:\Project\X\xyz.bat");
    
    我看到cmd提示符闪烁,什么也没发生

    当我有

    Process.Start(@"E:\Project\X\abc.exe");
    
    我得到了上面提到的对话框。我必须选择上面提到的.tct文件

    但我遇到了这样的错误

    无法打开“/input background.gif”:没有这样的文件或目录


    有没有一个解决方案可以让我运行我的程序,包括.bat文件或.exe文件。

    如果你没有从函数中提供错误消息,很难理解到底是什么问题,你可以尝试运行进程来更改其当前目录(我猜他们搜索一些找不到的东西,如“input background.gif”)。例如:

     ProcessStartInfo startInfo = new ProcessStartInfo("YourProgram.exe", "command line parameters");
     startInfo.WorkingDirectory = Application.StartupPath;
     Process.Start(startInfo);
    

    同意前面的答案,我想说的是,如果你的应用程序在windows7或更高版本下运行,请注意Windows用户帐户控制(UAC),关闭它或以管理员权限运行你的应用程序。否则进程对象将无法运行。

    实际上,我认为您的场景中可能存在一些混淆问题,因此我将在此处发布一个典型的调用bat程序:

        static void Main(string[] args) 
        { 
        ProcessStartInfo pst = new ProcessStartInfo("Your batch file","the arguments"); 
        Process p = new Process(); 
        p.StartInfo = pst; Console.WriteLine(p.StandardOutput); //Some info like error message in your batch file or comments. 
    p.Start(); 
        }
    
    您可以将批处理文件替换为可执行文件或批处理文件。 关于第二个问题,可能是批处理文件中有一些资源。如果要获取一个带有空格的目录,可以在其周围添加配额。 我建议您可以先在windows命令行中测试批处理文件,如果它按预期工作,然后再使用流程代码。
    希望有帮助。

    我没有收到任何错误。我得到的唯一错误是“无法打开”。/input background.gif:“没有这样的文件或目录”。这就是问题所在。我也试过你的方法,但它不工作同样的事情发生在你的方法也。当.bat文件执行时,只需获得cmd提示符的一个闪烁。将批处理文件输出重定向到一个文件(请参阅),以获取批处理所说的内容(可以包含批处理代码吗?)im使用XP professional。但还是得到了同样的东西。还有其他建议吗?非常感谢。但不知怎么的,我解决了问题,得到了结果。。我也试过你的方法,
     ProcessStartInfo startInfo = new ProcessStartInfo("YourProgram.exe", "command line parameters");
     startInfo.WorkingDirectory = Application.StartupPath;
     Process.Start(startInfo);
    
        static void Main(string[] args) 
        { 
        ProcessStartInfo pst = new ProcessStartInfo("Your batch file","the arguments"); 
        Process p = new Process(); 
        p.StartInfo = pst; Console.WriteLine(p.StandardOutput); //Some info like error message in your batch file or comments. 
    p.Start(); 
        }