環境変数PATHを探す
ファイル名を指定されたとき、環境変数PATHからフルファイル名を探したかったので、そういうコードを組んだ(linuxでいうところのwhich)。
System.Environment.GetEnvironmentVariable("Path")でPATHの文字列を取得し、splitで分割、foreachで探してExistsでチェックする。
以下サンプルコード。
using System; using System.IO; class env{ static private string SearchPath(string file){ if(Path.GetExtension(file)==String.Empty){ file = file + ".exe"; } string path = System.Environment.GetEnvironmentVariable("Path"); string [] patharray = path.Split(new Char[] {';'}); foreach(string p in patharray){ string filename = p + "\\"+file; if(File.Exists(filename)){ return filename; } } return null; } static void Main(string[] args){ if(args.Length ==0){ return; } string filename = SearchPath(args[0]); if(filename==null){ Console.WriteLine(args[0] + " is not found."); }else{ Console.WriteLine(filename); } } }
使い方。
% csc env.cs $ ./env.exe ipconfig c:\WINDOWS\system32\ipconfig.exe
こんな感じ。exeを適宜補っている。