私はWindows でmrを使用しており、リポジトリ アクションの前後に任意のコマンドを実行できます。私が見る限り、これは単に perl のsystem
関数を呼び出すことによって行われます。ただし、私の設定には何か問題があるようです: mr を作成するとき、d にある次のバッチ ファイルを実行します。
@echo off
copy /Y foo.bat bar.bat
最も基本的な Windows コマンドでエラーが発生します。
d:/foo.bat: line 1: @echo: command not found
d:/foo.bat: line 2: copy: command not found
mr が問題ではないことを確認するために実行しましperl -e 'system( "d:/foo.bat" )'
たが、出力は同じです。
コピーの代わりに xcopy を使用すると、出力が現在
d:/foo.bat: line 1: @echo: command not found
Invalid number of parameters
ただし、パラメーターの何が問題なのかわかりません。おそらく問題は、バッチファイルが標準コマンド環境に完全にアクセスできないことだと考えたので、明示的に実行しようとしましperl -e 'system( "cmd /c d:\foo.bat" )'
たが、cmdを開始するだけでコマンドを実行しません(コマンドラインを終了して、私がいた場所)。
ここで何が問題なのですか?詳細な説明は素晴らしいでしょう。また、これを解決するにはどうすればよいですか?バッチファイルをそのままにしておくソリューションを好みます。