2010-01-14 5 views
0

Process 클래스를 사용하여 C# 코드에서 배치 파일을 실행하려고합니다. 배치를 매개 변수로 가져오고 인용 문자열을 ProcessStartInfo.Arguments에 전달합니다. 배치가 실행될 때 약간의 쓰레기 ascii 기호가 붙어서 실행될 때 나는 어디서 오는 지 알 수 없다는 것 외에도 모든 것이 잘 작동합니다.프로세스를 사용하여 매개 변수가있는 일괄 처리 실행

%1 -S .\sqlexpress -i %2 

배치는 단지 특정 위치에 sqlcmd.exe를을 실행하고 실행하는 SQL 스크립트에 전달합니다 배치 스크립트는 간단한 보인다. 이 명령 줄을 수동으로 시도하면 훌륭하게 작동하므로 생성 된 명령 자체는 아닙니다. 아이디어?

[

[gallio] D:\Development\project_A\Trunk\build\compile>"D:\Development\project_A\Trunk\build\tools\sqlcmd\SQLCMD.EXE" -S .\sqlexpress -i "C:\Temp\project_A_consolidated_sql_scripts.sql" 
    [gallio] '' is not recognized as an internal or external command, 
    [gallio] operable program or batch file. 
    [gallio] Creating project_A database 
    [gallio] Changed database context to 'master'. 
    [gallio] Creating project_ADBUser login 
    [gallio] Changed database context to 'project_A'. 
    [gallio] Creating project_ADBUser user 
    [gallio] Creating project_A Schema 
    [gallio] Changed database context to 'project_A'. 

] Image 감사합니다 !

이 스크립트의 실행 결과를 만들 것입니다처럼 보인다.

답변

1

내 생각에 UTF-8 BOM (byte order mark)이있는 것 같습니다. 그것이 배치 파일 자체 또는 명령 행 인수에 있는지 여부는 말하기 어렵습니다. 어디에서 데이터를 가져오고 있습니까?

+0

매개 변수가있는 행 (맨 위)은 RunScript.bat 파일에 있습니다. 매개 변수에 대해서는, C# 코드에서 호출 한 Process 인스턴스를 통해 주입되어 문자열 매개 변수로 전달됩니다. RunScript.bat에 새로운 라인을 삽입해야했기 때문에 전혀 작동하지 않을 것입니다. 그렇지 않으면 완전히 실패했습니다. 이 방법으로 작동하지만 오류가 너무 귀찮습니다. 도움을 주셔서 감사합니다. –

+0

감사합니다. 정확히 그랬습니다. 메모장 ++를 사용하여 세 문자를 지우고 오류가 사라졌습니다. –