「child.cmd」ファイルには、次のコマンドがあります。
DTEXEC.EXE /FILE "\"%~dp0..\SSIS Packages\%stepName%.dtsx\"" /CONNECTION DestinationConnectionOLEDB;"\"Data Source=%serverName%;Initial Catalog=%databaseName%;Provider=%databaseProvider%;%security%;Auto Translate=false;\"" /CONNECTION SourceConnectionExcel;"\"Provider=%excelProvider%;Data Source=%~dp0..\Excel Import Files\BAs Code Tables.xlsx;Extended Properties=%extendedProperties%;HDR=YES;\"" /CHECKPOINTING OFF /REPORTING %reporting% > "%~dp0..\Logs\Import\%stepName%.txt"
基本的に、DTEXEC.EXE を使用して SSIS パッケージを実行し、出力をテキスト ファイルに送信します。「child.cmd」をダブルクリックすると、すべてうまくいきます。
ただし、別のバッチ ファイル (たとえば「parent.cmd」) から「child.cmd」を呼び出そうとすると、機能しなくなります。私の「parent.cmd」ファイルは次のようになります。
call "%~dp0""Batch Files\child.cmd"
「parent.cmd」を実行すると、「child.cmd」ファイルの DTEXEC.EXE に渡そうとしているパラメーターの形式が同じではなくなったようで、エラーが発生します。
Option "Files\..\SSIS" is not valid.
"Files..\SSIS" は /FILE ファイル パス入力の一部です。そのパスの「ファイル」部分の前にスペースがあります。ここで何が起こっているか知っている人はいますか?
注: 多くの変数は、スペースがあるため、二重引用符で囲まれたテキストを返します。スペースがあるところならどこでも問題を引き起こしているように感じます。子バッチとして実行しようとしたときにのみ問題が発生する理由がわかりません。
編集:「child.cmd」は「parent.cmd」よりも深いフォルダーです。「parent.cmd」で「child.cmd」を呼び出している上記のコードを更新しました。さらに、私は cmd ファイルに CD を設定していません。また、「parent.cmd」がどのファイルの場所から実行されるのかがわからない場合、私のグーグルは特に簡単ではないことを示しているようです。ケースはこちら。