using System.Text.RegularExpressions;
private static readonly Regex _lookForStartIn = new Regex(@"/startin=[""| ]*([\S\s]*)([""| ])", RegexOptions.Compiled | RegexOptions.IgnoreCase);
public static void Main()
Console.WriteLine("Hello World");
ProgramToRun programToRun = new ProgramToRun()
ProgramName = @"D:\OCS_Sys\OCS-HR-batchjob\aloe.exe /logid={u} /logpass={p} /logdb=OCS /BatchUpdate /logfile=C:\temp\ocsbatch2b.log /queue=2",
PathInfo = @"D:\OCS_Sys\OCS-HR-batchjob",
var path = programToRun.PathInfo.TrimEnd('\\');
var program = programToRun.ProgramName;
var user = programToRun.UserName;
var password = programToRun.UserPassword;
if (!string.IsNullOrEmpty(user))
program = program.Replace("{u}", user);
if (!string.IsNullOrEmpty(password))
program = program.Replace("{p}", password);
var parameter = string.Empty;
var startinParam = string.Empty;
if (program.IndexOf(" ", StringComparison.Ordinal) > 0)
parameter = program.Remove(0, program.IndexOf(" ", StringComparison.Ordinal)).TrimStart();
if (_lookForStartIn.IsMatch(parameter))
startinParam = _lookForStartIn.Match(parameter).Groups[1].Value;
parameter = parameter.Replace(_lookForStartIn.Match(parameter).Value, string.Empty).Trim();
programName = program.Remove(program.IndexOf(" ", StringComparison.Ordinal)).Trim();
var fullPathAndProgram = Path.Combine(path, programName);
Console.WriteLine($"fullPathAndProgram: {fullPathAndProgram}");
Console.WriteLine($"parameter: {parameter}");
Console.WriteLine($"startinParam: {startinParam}");
Console.WriteLine($"Exception: {ex}");
public class ProgramToRun
public string PathInfo { get; set; }
public string ProgramName { get; set; }
public string UserPassword { get; set; }
public string UserName { get; set; }