C#批次中等效%0

时间:2013-11-29 10:38:54

标签: c# batch-file command-line-arguments

好的,在使用%0的批处理文件中,将返回批处理文件的位置和名称。 E.g。

call %0 "Arguments"

这将导致批处理文件使用指定的参数调用自身。虽然我的要求有点不同,但我想知道是否有办法在C#中做到这一点。基本上,我想要用户运行的可执行文件的名称来启动我的程序。

批量使用时,用户可以重命名程序,但由于C#是面向对象的,因此不需要这样做。然后到那里仍然有一些旧方法来做到这一点。

提前致谢,Mona。

3 个答案:

答案 0 :(得分:3)

Environment.GetCommandLineArgs()返回一个数组不同的命令行参数,分别对应%0%1,....

因此,您可以使用Environment.GetCommandLineArgs()[0]获取已启动的流程。

(如果我没记错的话,这个技术有一个问题:这可能是8.3名MYAPPL~1.EXE而不是全名,具体取决于程序的启动方式。幸运的是,现在很少使用这些技术。< / p>

答案 1 :(得分:1)

这可以帮助您MSDN

  

默认应用程序域的友好名称是文件名   进程可执行文件。例如,如果可执行文件用于   启动过程是“c:\ MyAppDirectory \ MyAssembly.exe”,友好   默认应用程序域的名称是“MyAssembly.exe”。

System.AppDomain.CurrentDomain.FriendlyName

我认为它回答了这个问题:

  

我想要用户运行的可执行文件的名称来启动我的程序。

答案 2 :(得分:1)

您可以在Assembly.GetExecutingAssembly().Location中使用Main