2016-04-26 33 views
-2

私はバッチスクリプトに初心者です。私は以下のスクリプトを書いたが、実行されていなかった。文法などが不足しているかどうか教えてください。SVN&reviewboardのWindowsバッチスクリプト

スクリプト手順: - 変数%messagefileを%は、文字列の例の2行が含まれます: - PID-PROJECTID DEV SFRNUM:レビュー:123 ブロック内のエラーをスローする必要があり、誰のラインが欠落している場合:Commitmsgはそれ以外の場合は、続行する必要があります。

@echo off 
setlocal enabledelayedexpansion 

set BASEDIR=%CD% 
set URL=https://*******:443/reviewboard/ 
set YES=YES 
set MESSAGEFILE=%2% 


:: Checking If the API File Exists or Not. If Not Prompt Users to Create 

IF NOT EXIST C:\api (
echo Please Create a File api under C:\ and provide ur API details in it 1>&2 
exit 1 
) 
for /f "tokens=*" %%i in ('type "C:\api"') do (
set API=%%i 
) 


:: Comment Message Validations 


type %MESSAGEFILE% > tmpFile 
set "file=tmpFile" 
call :Commitmsg "%file%" 

type %BASEDIR%\tmpFile |findstr /IB "PID" > tmpFile1 
set "file=tmpFile1" 
call :Commitmsg "%file%" 


type %BASEDIR%\tmpFile |findstr /IB "Review" > tmpFile2 
set "file=tmpFile2" 
call :Commitmsg "%file%" 


:: Checking If SVN Command Client is Installed. If yes Store Some svn info into Variables 

svn info > svninfo 

IF ERRORLEVEL 1 (
echo Seems like SVN Command-line Client Not Installed. Please Install it. Contact Vercon For Support 1>&2 
goto :delFiles 
) 

for /f "tokens=4 delims=//" %%i in ('findstr /ilc:"Repository Root" "svninfo"') do (
set REP=%%i 
) 
for /f "tokens=3 delims=^/" %%j in ('findstr /ilc:"Relative URL" "svninfo"') do (
set TARGET_GROUPS=%%j 
) 

FOR /F "tokens=*" %%F IN (tmpFile1) DO (
set msg=%%F 
) 

FOR /F "tokens=2 delims=:" %%F IN (tmpFile2) DO (
set rev=%%F 
) 
FOR /F "tokens=* delims= " %%a IN ("%rev%") DO ( 
SET rev=%%a 
) 


:: Creating .reviewboardrc file 

echo REVIEWBOARD_URL = "%URL%" >> .reviewboardrc 
echo REPOSITORY = "%REP%" >> .reviewboardrc 
echo DISABLE_SSL_VERIFICATION = "%YES%" > .reviewboardrc 
echo API_TOKEN = "%API%" >> .reviewboardrc 
echo TARGET_GROUPS = "%TARGET_GROUPS%" >> .reviewboardrc 
echo PUBLISH = "%YES%" >> .reviewboardrc 
echo OPEN_BROWSER = "%YES%" >> .reviewboardrc 


:: Posting Reviews Based On Comment Message in SVN 


if /I "%rev:new=%" neq "%rev%" (
rbt post --summary %msg% --description %msg% 
goto :delFiles 
) else (
rbt post -r %rev% --summary %msg% --description %msg% 
goto :delFiles 
) 


:: Error Message in Case Of Wrong Commit Message in SVN 


:Commitmsg 
if %~z1 == 0 (
echo Please Provide the Commit Message in the First Line, Followed by review. 1>&2 
echo The First Line will be Taken as a Review Summary. 1>&2 
echo Follow the Below Example 1>&2 
echo ************************************************************ 1>&2 
echo PID-PROJECTID DEV SFRNUM:>&2 
echo Review:New/Review:01 1>&2 
echo To Create a New Review -- Review:New 1>&2 
echo To Update a Existing Review -- Review:01 1>&2 
echo ************************************************************ 1>&2 
echo Contact Vercon Team For Support 1>&2 
goto :delFiles 
) 

:delFiles 
IF EXIST tmpFile del tmpFile 
IF EXIST tmpFile1 del tmpFile1 
IF EXIST tmpFile2 del tmpFile2 
IF EXIST .reviewboardrc del .reviewboardrc 
IF EXIST svninfo del svninfo 
exit 1 

答えて

0

小訂正済!私は解決策を見つけたので、あなたの貴重な時間を無駄にしないでください。 ありがとう!