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'.

画像

ありがとうございました。

4

1 に答える 1

1

私の推測では、そこに UTF-8 BOM (バイト オーダー マーク) があると思います。それがバッチファイル自体にあるのか、コマンドライン引数にあるのかはわかりません。どこからデータを取得していますか?

于 2010-01-14T14:58:38.617 に答える