2012-03-14 82 views
0

我正在做一个项目,其中包括一个已经完成的程序。在Windows应用程序中包含一个.bat文件或一个.exe文件

它有一个.bat文件以及一个.exe文件。

现在已经做progream是在一个文件夹中的“X”,那里有许多文件,包括

  1. 是一个.tcl文件
  2. 是一个.exe文件
  3. 是.bat文件。

现在,当我点击.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"); 

,其中项目是我的项目得到保存的文件夹。还请注意即时通讯使用Windows应用

两种方式我不会得到结果。

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

在点击该按钮,如果我有

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

我得到的命令提示符的闪烁并没有任何反应。

当我有

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

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

但我得到这样的错误。

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

是否有一个地方,我可以运行我的程序incluidng德.bat文件或.exe文件的解决方案

回答

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

+0

非常感谢。但不知何故,我排除了它,并得到了结果..我也试过你的方法, – 2012-03-21 07:25:00

1

如果不从你的功能是提供错误信息。很难理解什么是错,反正你可以尝试运行过程中改变其当前目录(我猜他们寻找的东西,他们无法找到像“输入background.gif”)作为例子:

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

我没有得到任何错误。我得到的唯一错误是“无法打开”./input-background.gif“:没有这样的文件或目录”。那就是问题所在。我也试过你的方法,但它不起作用 – 2012-03-14 08:24:22

+0

同样的事情发生在你的方法也。只需在.bat文件执行时获得cmd提示即可。 – 2012-03-14 08:27:14

+0

将批处理文件输出重定向到一个文件(请参阅http://msdn.microsoft.com/zh-cn/library/system.diagnostics.process.standardoutput.aspx)以获取批处理_says_(您是否可以包含批处理代码? ) – 2012-03-14 08:36:56

0

同意的以前的回答,以及我想提到的更多事情是,如果您的应用程序在windows7或更高版本下运行,请注意Windows用户帐户控制(UAC),关闭它或使用管理员权限运行您的应用程序。否则,过程对象将不会运行。

+0

即时通讯使用XP专业版。但仍然会得到同样的结果。任何其他建议。 – 2012-03-14 08:29:14

相关问题