次のようなコマンドを解析するには、正規表現が必要です。
C:\Program Files\Internet Explorer\iexplore.exe https:\www.google.com
C:\Program Files\Internet Explorer\iexplore.exe http:\www.google.com
C:\Program Files\Internet Explorer\iexplore .exe www.google.com
iexplore.exe https:\www.google.com
コピー C:\test.txt D:\
ポイントは、最初の部分をコマンドとして取得し、他の部分を引数として取得したいということです。コマンドは、、などを含む何でもかまい.bat
ません.vbs
。.exe
コマンドにスペースがなければ正常に機能する正規表現を見つけました。
string str = @"C:\xcopy D:\test.txt D:\Test";
string pattern = @"^(?:""([^""]*)""\s*|([^""\s]+)\s*)+";
Regex parseDir = new Regex(pattern, RegexOptions.IgnoreCase);
if(parseDir.IsMatch(str))
{
Match dir = parseDir.Match(str);
var captures = dir.Groups[1].Captures.Cast<Capture>().Concat(
dir.Groups[2].Captures.Cast<Capture>()).
OrderBy(x => x.Index).
ToArray();
string cmd = captures[0].Value;
string arguments = string.Empty;
for (int i = 1; i < captures.Length; i++)
{
arguments += captures[i].Value + " ";
}
Console.WriteLine(cmd);
Console.WriteLine(arguments);
}