2016-06-01 4 views
-1

iamはループをバッチスクリプトに入れようとしましたが、目的の結果が得られませんでした。コードを見てください。ifループが間違っていますか? IF%%== 1 echo "vvvvv" it でも1 == 1と1 == 0はバッチスクリプトと同じですか?禁止され、ここでバッチifループが実行できません

call E:\utility\batfiles\DBAEnvProd.cmd 
set dbname=UMRdb 

set proc=UMRdb.[dbo].[maintenancemode] 
call %osqlExeLocation% -E -d%dbname% -S%svr% -w%w% -b -Q"exec %proc%" -o%pathout%%Maintmode.txt 

@echo on 
set "usrname=Y" 
set "banfile=E:\utility\sysout\Maintmode.txt" 
find /i "%usrname%" "%banfile%" >nul 2>&1&&set /a banned=1 || set /a banned=0 
echo %banned% 
echo comparing maintenance 

IF %banned% == 1 echo "vvvvv" 
(

iは、コードの残りの部分は、それが が )

通常のコードが実行されるべきendgoodに行くSHD実行したいいけない、その後1である

@echo on 
REM ******************************************************************************** 
REM JOB: TCMP_DBA_M_MNT_UMR_ESSENTIAL 
REM 
REM ******************************************************************************** 

set job=TCMP_DBA_M_MNT_UMR_ESSENTIAL 
set RetCode=0 
time /T & date /T 

erase %pathout%%job%*.suc > nul 
erase %patherr%%job%*.err > nul 

REM ******************************************************************************** 
REM to display date and time 
for /F "tokens=1-3 delims=:. " %%A in ('time/T') do set var=%%A%%B%%C% 
set timestamp=%date:~4,2%%date:~7,2%%date:~10,4% 
set timestamp1=%timestamp%%var% 
REM 
REM ******************************************************************************** 

:main 

echo --- DB Growth Info 
set proc=UMRdb.[dbo].[spCollectDBSpaceInfo] 
call %osqlExeLocation% -E -d%dbname% -S%svr% -w%w% -b -Q"exec %proc%" -o%pathout%%job%_spCollectDBSpaceInfo.txt 
if errorlevel 1 (
    set RetCode=1 
    goto endbad 
) 

echo --- Cleanup of output files older than 30 days in sysout folder 
call forfiles -p E:\utility\sysout /D -30 /M *.txt /C "cmd /c del @file" 






:ENDGOOD 
set RetCode=0 
ECHO SUCCESS!!! %svr% %job% %proc% 
echo %ErrMsg% > %pathout%%job%.SUC 

GOTO END 

:ENDBAD 
set RetCode=1 
ECHO ERROR!!! %svr% %job% %proc% 
echo SEE %pathout%%job%_%proc%.txt FOR ERRORS > %patherr%%job%.ERR 

:END 
time /T & date /T 
echo %RetCode% 

%pathexe%cc.exe %RetCode% 

REM EXIT 
+0

質問は非常に明確で、誰もが疑問ください人々が私たちに伝える – deepti

+0

を求めることができた場合である数値の比較ですがやるだろうあなたの質問ははっきりしていません。 a) '-o%pathout %% Maintmode.txt'二重' %% 'は何をしていますか? b)スクリプトの別の部分に行きたい場合は、なぜgotoを使用しないのですか? c)何が単一であるのか(疑わしい ''もし ''の後で行なわれていればうまくいくのですか?) – Stephan

答えて

-2

これには問題がある

IF %banned% == 1 echo "vvvvv" 

==は文字列の比較を実行し、私は多くのスペースを見ています。 %禁止%が1の場合1ここでは "1" == "1"を比較しています。あなたは/ = 1禁止されているように、それはより良い

IF %banned% EQU 1 

または引用符で囲まれた文字列の比較です

If "%banned%" == "1" 
+1

'' IF%禁止%== 1 echo "vvvvv" ''スペース、どこで、彼らは(それが悪いスタイルだが)ある – Stephan

+0

IAM言われているものを使用して、まだCMDプロンプトEでエラーを取得IAM:\ユーティリティ\ batfiles>コマンドの構文が間違っているメンテナンス を比較する比較maintenan をエコー E。 :\ utility \ batfiles> IF "1" == "strinの1 = 1が正しくない場合"正しい構文は何ですか?単純です。sucessfullならば比較したいと思っています。特定のコードを実行します.vbscriptがはるかに良いです。 – deepti

+0

stephan単純なifループを使用したいと思う正しいスタイルになることができます – deepti

関連する問題