예제 #1
0
 /// <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();
 }
예제 #2
0
        /// <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;
            }
        }