C#Process类允许您在Windows中运行命令行可执行文件。 Process.StartInfo类包含有关要运行的命令行作业的信息,包括其路径和文件名。
我的问题是如果文件不存在,Process.Start()将抛出异常。为了避免异常,我编写了一个检查以查看文件是否存在,但是这在所有实例中都无法正常工作,因为名称可能不存在具有该确切名称的文件,但可能具有可执行文件。例如,“C:\ SoAndSo”可能不作为文件存在,但“C:\ SoAndSo * .exe *”会存在,并且在启动Process命令时会成功找到。
我已经破解了我的支票,尝试给我的名字,名字+“。exe”和“.bat”,但这感觉很笨,也许我错过了其他可执行的扩展程序。
所以:有一个命令可以问这个问题:'你有一个以'SoAndSo'开头的文件名的可执行版本吗?
答案 0 :(得分:3)
为什么不尝试启动Process并将其包装在try / catch中,当你得到FileNotFoundException时,你只需打印输出并退出?我看到你想尝试避免异常,但你可能会有更多的开销试图阻止它而不仅仅是招致它。
答案 1 :(得分:2)
id有类似的要求..&我使用环境变量%PATHEXT%
解决了它。
参考可以找到here, 说我正在尝试找一个名为abcd的程序然后该应用程序会寻找
*abc*.
所有扩展程序组合都可以使用%PATHEXT%
变量..
我会说这是一个粗略的实现..但它对我有用..我;我确信有更好的方法来做到这一点。