본문 바로가기
프로그래밍/C#

[C#] VBScipt 실행시키고 결과값 리턴받기

by 왕초보 개발자 2021. 6. 27.
728x90

example.vbs 파일 내용

' input value
arg1 = WScript.Arguments.Item(0)
arg2 = WScript.Arguments.Item(1)

' output value
WScript.StdOut.WriteLine(arg1 & " AND " &arg2)

 

example.vbs 파일을 실행하는 C# 코드

System.Diagnostics.Process scriptProc = new System.Diagnostics.Process();
scriptProc.StartInfo.FileName = @"cscript"; 

// vbs 파일 경로를 원하는 위치에 맞게 변경  &  argument 추가될 때마다 {num} 추가(1부터 시작), 파일 경로 뒤에 argument 값 삽입
scriptProc.StartInfo.Arguments = string.Format("\"{0}\" \"{1}\" \"{2}\"", @"c:\rpa\example.vbs", "arg1", "arg2");

// 옵션 설정
scriptProc.StartInfo.RedirectStandardOutput = true;
scriptProc.StartInfo.RedirectStandardError = true;
scriptProc.StartInfo.UseShellExecute = false;

var outputWriter = new System.IO.StringWriter();
scriptProc.OutputDataReceived += (sender, args) => outputWriter.WriteLine(args.Data);
var errorWriter = new System.IO.StringWriter();
scriptProc.ErrorDataReceived += (sender, args) => errorWriter.WriteLine(args.Data);
				
scriptProc.Start();

scriptProc.BeginOutputReadLine();
scriptProc.BeginErrorReadLine();

scriptProc.WaitForExit();

String result;
if (scriptProc.ExitCode == 0){
    result = outputWriter.GetStringBuilder().ToString(); // 정상 수행됐을 경우 리턴될 결과값
}
else{
    result = errorWriter.GetStringBuilder().ToString();
}

scriptProc.Close();

//Microsoft (R) Windows Script Host 버전 5.812
//Copyright (C) Microsoft Corporation. All rights reserved.
//
//arg1 AND arg2
//
// 위와 같은 형식으로 리턴됨. Script 프로그램 정보와 개행문자 제거 후 리턴값 사용해야 함
728x90