5

これを機能させることができません

call "%MSDeployPath%msdeploy" -verb:sync -source:runCommand='backup.bat param1' -dest:auto,computername=10.xx.xx.xx,username=xxx,password=yyy

それは私に与えます:

警告: 'backup.bat' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されません。

警告: プロセス 'C:\Windows\system32\cmd.exe' (コマンド ライン '') はコード '0x1' で終了しました。合計変更: 1 (追加 0、削除 0、更新 1、パラメータ変更 0、コピー 0 バイト)

param1 を削除して .bat 内にハードコーディングすると動作するので、bat ファイルに問題はありません。

.bat へのフル パスを指定しようとしましたが、まだ機能しません。

call "%MSDeployPath%msdeploy" -verb:sync -source:runCommand='c:\backup.bat param1' -dest:auto,computername=10.xx.xx.xx,username=xxx,password=yyy

この場合、パスをリモート パスとして解釈しているように見え、backup.bat がサーバー上にあると想定しています。サーバー上のbackup.batを移動した後、これが確認されました。

なぜそんなに難しくなければならないのですか?

4

1 に答える 1

7

編集そのとおりです。ドキュメントには、cmd/bat ファイルが宛先にストリーミングされると記載されています。

引数を受け入れることができないというのは、単に機能の制限であるように私には思えます。ハードコーディングされた設定を使用して、展開時にバッチ ファイルの変更されたバージョンを作成することはそれほど難しくありません。

何かのようなもの:

REM Start of prepended script
SET SCRIPT_USERNAME=ThatGuy
REM End of prepended script

IF ("%SCRIPT_USERNAME%" == "") SET SCRIPT_USERNAME=%1

更新msdeploy の反映されたソース (ahem) を閲覧したところ、それが現在の設計どおりであることを確認できました。パス全体がファイルを表すかどうかに基づいて、ファイルをアップロードするかどうかを決定します。引数を追加するとファイルへのパスを解決できなくなるため、何もアップロードしません。

于 2012-10-04T11:46:38.123 に答える