2013-08-05 76 views
0

我想寫一個批處理腳本來運行數據庫上的sql文件。 我希望腳本將sql查詢執行的結果放入一個日誌文件(使用類似>> SQl_LOGS.txt)。該工作正常,但我想獲得用戶輸入,如果 他/她想繼續執行下一個SQ1查詢與否。重定向輸出到日誌文件,並接受用戶輸入在同一批處理腳本

一切,甚至是暫停重定向到日誌文件,因此我不能在控制檯上提供任何輸入。

被稱爲內部for循環子程序:

:ProcessQuery 


(
echo WHENEVER SQLERROR EXIT 1 
echo WHENEVER OSERROR EXIT 1 
echo @%query% XXuser   // This should be sent top a log file 

) | sqlplus XXuser/[email protected](DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=XX.XX.XX.XX)(Port=XXXX))(CONNECT_DATA=(SID=XXXX))) 


echo error level is : %ERRORLEVEL% 

IF %ERRORLEVEL% == 1 ( 
    ECHO WARNING : QUERY %query% EXECUTION ERROR ! // these 3 lines should come up in the 
                // console  
    echo PLEASE FIX THE ERROR AND THEN HIT ENTER. 
    pause       

) ELSE (
    echo %str% %query% 
    ECHO INFO : QUERY %query% EXECUTION SUCCESSFUL ! 
) 

能否批處理腳本輸出相同的日誌文件,也從控制檯獲取用戶輸入? 有沒有辦法實現這一目標?

+1

是整個子程序重定向到日誌嗎?如果是的話,使用'回聲這到控制檯> con:' – Stephan

+0

這很好!非常感謝你!! 1我爲此感謝了5天:) – DntFrgtDSemiCln

回答

1

如果您只想記錄腳本的某些部分,只需在腳本的這些特定行上使用>> SQL_LOGS.txt(而不是在調用腳本時使用它)。

至於提示輸入特定用戶做出響應,給這條快速閱讀:http://www.quepublishing.com/articles/article.aspx?p=1154761&seqNum=12

編輯 - 這裏通過上面的鏈接啓發批處理腳本,應有助於舉例說明你的目標。

@echo off 
echo This is an example of accepting user input and writing some output to a log. 
:again 
    set /p answer=Do you want to run a sql script (Y/N)? 
    if /i "%answer:~,1%" EQU "Y" goto logit 
    if /i "%answer:~,1%" EQU "N" exit /b 
    echo Please type Y for Yes or N for No 
    goto again 
:logit 
    echo sql script goes here. this command's response is sent to the log. >> test.log 
    goto again 
+0

謝謝你的回覆。但是我已經試過了你的建議。當我將部分腳本重定向到日誌文件時,提示用戶輸入disappers – DntFrgtDSemiCln

+0

這個解決方案是好的,但它不完全是我正在尋找。 – DntFrgtDSemiCln

+0

它是否讓你在正確的軌道上,你有一個腳本,接受輸入_and_輸出到日誌? –

相關問題