2010-01-14 57 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中插入一個新行,這樣它就可以工作,否則它完全失敗。它正在以這種方式工作,但是那個錯誤太令人討厭了...... 感謝您的幫助。 – 2010-01-16 17:47:31

+0

謝謝,就是這樣。我用HEX編輯器使用Notepad ++刪除這三個字符,錯誤消失了。 – 2010-01-16 18:17:42