我正在做一个项目,其中包括已经完成的程序。
它有.bat文件和.exe文件。
现在已完成的progream位于文件夹'X'中,其中有许多文件,包括
现在,当我点击.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文件。
答案 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代码。 希望有所帮助。