2011-08-02 293 views
0

簡介: 我是批處理腳本新手。希望在以下腳本中具有潛在客戶。批處理腳本

目標:必須編寫批處理命令來更新應用程序。然後讀取應用程序更新後生成的日誌,以檢查它是否成功。

我運行使用一個簡單的批處理文件的應用程序,在

C:\Documents and Settings\<user>\locals~1\temp\Application

我生成具有用於所述結果的命令

"C:\Program Files\Application\Test.exe" /application paramater /q /from "\\share\file"

日誌文件(xyz.log)希望我的批處理文件運行第一個命令並讀取日誌文件中生成的結果(輸出成功字符串)。

CanI可以得到任何輸入。

+0

在保持本網站的方法論的興趣,如果你的問題得到解答,請接受下面的答案。 – kevlar1818

回答

3

這是測試,但它是很好的起點,你可以用它來學習一些MS-DOS /批處理命令。如果您需要特定的語法幫助,鍵入命令提示符[some-command] /?

@echo off 
:: variables -------------------- 
set appexe=C:\Program Files\Application\Test.exe 
set share=\\share\file 
set logfile=%TEMP%\Application\xyz.log 
set appcmd="%appexe%" /param /q /from "%share%" 

if not exist "%appexe%" echo Executable not found& goto END 
if not exist "%share%" echo Shared folder not found& goto END 

:: run executable --------------- 
%appcmd% 

if not exist "%logfile%" echo Logfile not found& goto END 

:: iterate through logfile ------ 
find "update success text" "%logfile%" >NUL || (echo Update unsuccessful& goto END) 
echo Update successful! 

:END 
pause 
exit 

編輯:用於find,而不是一個循環。 +1並感謝舍甫琴科中號

+0

非常感謝kevlar1818和Andriy M在這方面的幫助。 – misguided

+0

日誌文件具有多個條目,其中一些來自較早的日期。這個方法建議,尋找一個字符串,但該字符串可能必然是一個較舊的日期。我如何查找最新的「更新Sucessfull」字符串?它位於日誌文件的最底部。 – misguided

1

可以使用FIND命令來搜索一個文件的字符串:

FIND "success" "%TEMP%\Application\xyz.log" >NUL && (ECHO Update successful) || (ECHO Update failed) 
  • %TEMP%計算結果爲當前用戶系統臨時文件夾。

  • >NUL取消輸出FIND命令。

  • &&如果找到字符串,則將控制權傳遞給後續命令(ECHO)。

  • ||如果搜索失敗,則將控件傳遞給它後面的命令(另一個ECHO)。

如果你想爲FIND結果上執行多個命令,你可以使用這樣的事情:

FIND "string" file_name && (command1 & command2 & …) || (command3 & command4 & …) 

或者您可以使用GOTO命令。例如,像這樣:

FIND "success" "%TEMP%\Application\xyz.log" >NUL || (GOTO searchfailed) 
series of commands as a result of successful search 
GOTO :EOF 

:searchfailed 
series of commands as a result of unsuccessful search 

:label_name是一個標籤聲明。 GOTO searchfailed表示跳轉到聲明searchfailed標籤的行。

GOTO :EOF本質上退出批處理腳本。(:EOF是一個特殊的預先定義的標籤指向在Ë第二Ø˚F˚F ILE)