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

时间:2012-03-14 07:52:47

标签: .net batch-file exe

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

它有.bat文件和.exe文件。

现在已完成的progream位于文件夹'X'中,其中有许多文件,包括

  1. 是.tcl文件
  2. 是.exe文件
  3. 是.bat文件。
  4. 现在,当我点击.exe文件时,它会打开一个对话框,我必须选择上面提到的.tcl文件并执行该程序。

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

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

    现在我正在做一个项目,我必须调用这个所谓的已经完成的程序。

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

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

    Process.Start(@"E:\X\xyz.bat");
    

    但我的程序没有执行。

    所以我在我的项目中添加了整个文件夹'X'并尝试了这个。

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

    Process.Start(@"E:\Project\X\xyz.bat");
    

    其中project是保存项目的文件夹。另请注意我使用Windows应用程序。

    两种方式我都没有得到结果。

    我保留了按钮点击事件的process.start。

    在按钮期间单击是否有

    Process.Start(@"E:\Project\X\xyz.bat");
    

    我看到cmd提示符闪烁,没有任何反应。

    当我有

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

    我得到了上面提到的对话框。我必须选择上面提到的.tct文件。

    但我得到这样的错误。

      

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

    是否有解决方案,我可以运行我的程序incluidng teh .bat文件或.exe文件。

3 个答案:

答案 0 :(得分:1)

如果你没有提供你的函数的错误消息,那么你很难理解什么是错的,你可能会尝试运行更改当前目录的进程(我猜他们会搜索一些他们找不到的内容,如“input-background.gif” )。例如:

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

答案 1 :(得分:0)

同意之前的回答,我想提及的更多内容是,如果您的应用在Windows7或更高版本下运行,请注意Windows用户帐户控制(UAC),关闭它或使用管理员权限运行您的应用。否则,进程对象将无法运行。

答案 2 :(得分:0)

实际上我认为你的场景中可能存在一些混淆问题,所以我会在这里发布一个典型的呼叫蝙蝠程序:

    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命令行中测试批处理文件,如果按预期工作,则转到Process代码。 希望有所帮助。