我已經看過一些覆蓋這個主題的線程,但我無法將建議應用到我的stituation中。 我希望只有在file1存在並且來自sql命令的行計數返回的計數大於0時才能運行代碼塊。兩者都必須爲true才能運行代碼塊(:RUNCODE)。我已經設置了一些IF來處理這個,它跳轉到:RUNCODE或END。在批處理腳本中使用Sql變量
SET SqlServerName="SERVER1"
SET SqlDatabaseName="DB1"
SET SQL="SELECT COUNT(*) FROM TABLE1"
SQLCMD.exe -S%SqlServerName% -E -d%SqlDatabaseName% -Q%SQL% -h -1 -o RowCount.txt
SET /p RowCount= <RowCount.txt
DEL RowCount.txt
echo %RowCount%
IF EXIST "File1" IF %RowCount% GTR 0
(
ECHO Running the position Loader for EFA...
GOTO RUNCODE
)
IF NOT EXIST "File1" IF %RowCount% EQU 0
(
ECHO The Position File Does not Exist...
GOTO END
)
IF EXIST "File1" IF %RowCount% EQU 0
(
ECHO The File Does not Exist...
GOTO END
)
IF NOT EXIST "File1" IF %RowCount% GTR 0
(
ECHO The Position File Does not Exist...
GOTO END
)
:RUNCODE
echo Running code block now now...
EXIT
:END
echo conditions not met...
EXIT
上面的代碼給我行數= 0(與在變量白空間) 和如果出現條件完全跳過。
任何幫助將不勝感激。
輸出腳本示例。請注意,是在0前面的白色空間,而不是在(1行受影響)
0
(1行受影響)
您可以發佈您的示例腳本輸出? –
該文件只是三行。首先有行計數(0),結果前有空白。然後第二行有一個空行。最後'(1行受影響)'在第三行。 – ricky89
你不需要修改你的'RowCount'變量。如果你遵循@ MattWilliamson的回答並修正你的'()',你的腳本應該可以正常工作。 –