2017-02-14 8 views
0

Windows起動時に実行するSVN(ローカルグループポリシーエディタで設定)から最新のリビジョンファイルをプルダウンするためのバッチスクリプトがあります。ここで起動時のバッチスクリプト

は、スクリプトのコードです:

@echo off 

if "%1"=="" (
    set LIBPATH=C:\ALTIUM_WORK\00001_MCHP-CDB\parts\Library 
) else (
    set LIBPATH=%1 
) 

svn cleanup %LIBPATH% 

set DATETIME=%DATE:~4,2%/%DATE:~7,2%/%DATE:~10,4% %TIME:~0,2%:%TIME:~3,2%:%TIME:~6,2% 

echo %DATETIME%>mcl_update.log 
svn up %LIBPATH%>>mcl_update.log 

if ERRORLEVEL 1 goto ERRHANDLER 
Exit 

:ERRHANDLER 
<Insert error message here> 

私はダブルクリックの.batにより、このスクリプトを実行すると、私はmcl_update.logで次の出力を得る:

02/14/2017 16:13:50 
Updating 'C:\ALTIUM_WORK\00001_MCHP-CDB\parts\Library': 
At revision 5800. 

この私が期待するものですが、起動時にスクリプトが実行されると、最後の行は省略されます。

02/14/2017 16:16:07 
Updating 'C:\ALTIUM_WORK\00001_MCHP-CDB\parts\Library': 

二行目はsvnからの出力の一部であるため、コマンドを開始するように思えるが、ちょうど終了したことがない:それはこれでmcl_update.logに移入されます。なぜこれが起こっているのか分からない。誰にもアイデアはありますか?

ありがとうございます!

-Sean

情報の新たに発見されたビットに:私は、生成されたログファイルを削除しようとした場合、起動後、Windowsがアクションは、ファイルために完了できません」というエラーがスローされますcmd.exeで開かれています "。

これはドメインの問題である可能性がありますか?私の会社のネットワークへの接続はまだ行われていないので、svnコマンドがハングアップするだけですか?

答えて

0

pathは、起動時に期待しているものではないと思われます。おそらく、あなたが明示的に記録している唯一のレポートがechoであり、svnからの応答ではないため、svnのパスを明示的に指定する必要があります。

+0

'更新 'C:\ ALTIUM_WORK \ 00001_MCHP-CDB \ parts \ Library':'は 'svn'出力の最初の部分です。それは決してコマンドを完了するようには見えない。 サニティチェックと同じように、まず 'svn'のパスに' cd'を追加しましたが、出力は同じです。 'svn'を呼び出す際に明示的なパスを使う必要がない限り。 – detroitwilly

+0

タイミングの問題があると思われる場合は、おそらく最初の 'svn'の前に' timeout/t 90> nul'を挿入してください。それ以外の場合は、2番目の(問題のある) 'svn'の後に' pause'を追加し、リダイレクトを削除します。私は 'svn'が入力を待っていて、おそらく' stderr'で報告していると思われますので、プロンプトはリダイレクトのために 'stdout'に現れません。最初の 'svn'が完了したように見えるのは興味深いことです。 '2>&1'はstderrとstdoutをあなたの現在のリダイレクタでファイルにリダイレクトしなければなりません(しかし' svn'が待っている入力には役に立たないでしょう) – Magoo

0

@ Magooがファイルstderrを配管した後、この問題は明らかになりました。私のサーバーのユーザー認証と関係があることが判明しました。起動時(つまり、ログインする前)にスクリプトが実行されていたため、ユーザ認証が不可能であるため、svnコマンドは機能しませんでした。

スタートアップではなくログオン時にスクリプトを開始するようにグループポリシーを変更しました。

関連する問題