Mimic Linux在C#中的哪个命令

时间:2016-12-08 14:43:56

标签: c#

我在名为GraphViz的C#项目中使用工具的二进制文件。 问题是我必须将二进制路径包含为硬编码,我不想这样做。

IRenderer renderer = new Renderer("C:\\Program Files (x86)\\Graphviz2.38\\bin"); // todo: remove hardcoded GraphViz path

我想模仿linux which命令。 只需传递二进制名称(例如dot)并获取路径。

GetBinaryPath("dot"); // return the above path

我很感激您开始搜索的任何想法或主题。

请注意 目标操作系统:Windows
.NET版本:4

2 个答案:

答案 0 :(得分:2)

如果您需要查找仅给出可执行文件名的路径(并且安装目录位于您的PATH环境变量中)

选项1:

where类使用Process命令。 (测试退出代码,解析输出)

选项2:

您可以获取环境PATH环境变量,将其拆分为“;”并测试您的可执行文件名称是否存在。

答案 1 :(得分:0)

首先,您需要找到Windows搜索可执行文件的所有目录,这些目录来自环境变量%PATH%。 然后你需要从%PATHEXT%找到所有扩展名(.com,.exe,.bat等)。

然后你就这样检查一下:

(try_cast(New_NewValue as date ) >= '04/01/2017' AND try_cast(New_NewValue as date ) IS NOT NULL)
)