【发布时间】:2012-08-06 17:28:05
【问题描述】:
我对使用 C# 非常陌生,目前仅将其用于工作目的。我目前正在编辑一个现有的应用程序,并试图添加一个函数来调用我编写的批处理文件。此批处理文件运行 CLI 程序并执行一些错误级别检查以确保程序正确执行并向命令提示符报告任何错误。我不想在 C# 中重写这个函数,因为当我在没有主程序的情况下执行这个任务时,这个批处理文件对我很有用。但是,如果需要在 C# 中重写此批处理文件的函数,我将不知道该怎么做。
我在网上找到了这段代码来运行我的批处理文件,效果很好:
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.EnableRaisingEvents = false;
proc.StartInfo.FileName = "C:mypath\\mybatfile.bat";
proc.Start();
我对这段代码的唯一问题是它需要我在部署应用程序之前设置这条路径。我将把这个应用程序分发到其他几台机器上,并可能最终分发到更多机器上。我真的很想找到一种方法以某种方式将此路径链接到程序的保存位置,并将此批处理文件包含在应用程序的资源中。
这一切都可能非常离谱,我们将不胜感激任何提供的方向。
我对 C# 和其他 PC 编程中使用的术语知之甚少,因为我的大部分经验都在 uControllers 中。
编辑:我的程序是一个 GUI .xaml 应用程序。我还决定我愿意用 C# 重写我的批处理文件,因为我的批处理文件中也有一些我忘记的路径。有什么方法可以运行命令提示符应用程序并传递命令行参数并轻松检查错误级别?
编辑2:我添加这个只是为了帮助将来出现这个线程的任何人。这就是我最终解决问题的方法,使用了下面 Dantix 的建议:
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.EnableRaisingEvents = false;
string bat_path = System.Reflection.Assembly.GetExecutingAssembly().Location;
proc.StartInfo.FileName = bat_path.Replace("\\myAppName.exe, "") + "\\myBatchFile.bat";
proc.Start();
感谢大家的帮助!
【问题讨论】:
-
您打算如何部署应用程序?如果您使用的是 msi 或类似的东西,那么您可以在其中创建路径作为设置。
-
我还不确定我将如何部署该应用程序。老实说,我还没有走到那一步。我不想使用 msi,因为我们经常将我们的应用程序作为可执行文件与依赖文件共享。不过我并不完全反对这个想法,只是不知道如何实现它。
标签: c# batch-file path command prompt