/// <summary> /// 初期値でパラメータを設定 /// </summary> public void SetDefaultParameter() { this.FilesPath = Path.Combine(Item.DEFAULT_WORKDIR, "Files"); this.LogsPath = Path.Combine(Item.DEFAULT_WORKDIR, "Logs"); this.OutputPath = Path.Combine(Item.DEFAULT_WORKDIR, "Output"); this.DebugMode = false; this.RunOnce = false; this.Ranges = DefaultRangeSettings.Create(); this.Languages = DefaultLanguageSetting.Create(); }
/// <summary> /// スクリプト実行 /// </summary> /// <param name="info"></param> private void ScriptOrocess(CommandInfo info) { if (Languages == null) { // 事前登録ScriptLanguage設定のみ使用。今回はカスタマイズさせない方向で Languages = DefaultLanguageSetting.Create(); } string scriptFile = Path.Combine(Item.SCRIPT_DIRECTORY, info.ScriptName); info.SaveScript(scriptFile); string extension = Path.GetExtension(scriptFile); Language lang = Languages.FirstOrDefault(x => x.Extensions.Any(y => y.Equals(extension, StringComparison.OrdinalIgnoreCase))); using (Process proc = lang.GetProcess(scriptFile, "")) { proc.StartInfo.CreateNoWindow = true; proc.StartInfo.UseShellExecute = false; proc.StartInfo.RedirectStandardOutput = true; proc.StartInfo.RedirectStandardError = true; proc.OutputDataReceived += (sender, e) => { info.AddOutputLine(e.Data); }; proc.ErrorDataReceived += (sender, e) => { info.AddOutputLine(e.Data, error: true); }; proc.Start(); proc.BeginOutputReadLine(); proc.BeginErrorReadLine(); proc.WaitForExit(); info.ReturnCode = proc.ExitCode; } }