1

Windows バッチ スクリプトに関するヘルプが必要です

私は何を達成しようとしています:

  • リポジトリから最も新しい (最後の) リビジョンを取得する
  • そのファイルで特定の文字列を検索する
  • 文字列が存在する場合、Web ページを読み込みます

私が試したこと:

set REVNO=$(svnlook youngest D:\Subversion\...)
set REVURL=D:\Subversion\...\db\revprops\0\
findstr /m "string_I_am_searching_for" %REVURL%%REVNO%
if %errorlevel%==0 (
  start http://webpage
)

なぜ私はこれをやろうとしているのですか:

メッセージに特定の文字列を含むコミット後に Hudson CI 自動テストを開始したい (例Autobuild: true)

Windows バッチ スクリプトに慣れていないため、コードをデバッグできません

私のスクリプトでは、次を使用しました

  • パスに変数を追加できるかどうかわからなかったため、変数の連結(間違っている可能性があります)
  • findstrファイルに文字列が含まれているかどうかを調べる (findstr は変数にも使用できることを知っています)

私の小さなスクリプトに構文上の問題だけでなく、意味上の問題があっても驚かないでしょう。なぜなら、既に述べたように、私はこれまでバッチ スクリプトをあまり作成したことがないからです。

要件も仕様もないので、スクリプトは可能な限り実装できます。だから私は提案のために開いています

post-commitPS私はまた、svnはすべてが完了するまでコントロールをユーザーに返さないため、太りすぎのプロシージャを使用することは良い考えではないことも読みました->これは大きな問題ではありません

編集: 私は実際に最新のリビジョン番号を取得したのではなく、コマンド文字列を使用したことをサイドテストで発見しました。もう少しグーグルで検索した後、Windowsでコマンドを呼び出して結果を変数に保存するのはそれほど簡単ではないことがわかりました。そのため、ファイルを使用して中間結果を保存することにしました。

これは私が試したことです:

cd D:\Subversion\...\hooks
SET OUTPUT=testing
FOR /F "tokens=*" %a in ('revision.bat') do ( SET OUTPUT=%a )
findstr /m "o" D:\Subversion\...\db\revprops\0\%a
if %errorlevel%==0 (
  start http://webpage
)

リビジョン.bat:

svnlook youngest D:\Subversion\...

今、私はSVNでこのエラーを受け取ります:

post-commit hook failed (exit code 255) with output:
a" ) was unexpected at this time.

a間違った時間に間違った場所に変数を作成したためだと思います。しかし、batファイルを手動で実行すると、このエラーは発生しません

4

1 に答える 1

0

それを行う1つの方法が見つかりました-中間関数を.batファイルに保存する:

post-commit.bat

@ECHO OFF
cd D:\Subversion\...\hooks
SET OUTPUT
FOR /F "tokens=*" %%a in ('revision.bat') do ( SET OUTPUT=%%a )
findstr /m "o" D:\Subversion\...\db\revprops\0\%OUTPUT%
if %errorlevel%==0 (
  start http://website
)

リビジョン.bat

svnlook youngest D:\Subversion\...

私の意見では、これは解決策というよりもむしろ回避策です

おかげで: https://serverfault.com/questions/245679/store-output-of-windows-command-in-batch-file

于 2013-07-09T13:17:50.603 に答える