2011-08-02 9 views
0

導入: バッチスクリプトを初めて使用しています。次のスクリプトにはリードがあります。バッチスクリプト

目的:バッチコマンドを記述してアプリケーションを更新する必要があります。そして、アプリケーションが更新された後に生成されたログを読んで、それが成功したかどうかを確認します。

Iは

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

Iで発生につながるためのコマンド

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

ログファイル(xyz.log)を有する単純なバッチファイルを使用してアプリケーションを実行します私のバッチファイルが最初のコマンドを実行し、ログファイル(成功文字列のserach)で生成された結果を読み取るようにします。

この入力は任意です。

+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ではなく、forループ。 +1とアンドリー・M

+0

これであなたの助けをしてくれてありがとうkevlar1818とAndriy M。 – misguided

+0

ログファイルには複数のエントリがありますが、古いものからのものもあります。このメソッドは、文字列を検索することを提案しましたが、その文字列は必ず古い日付である可能性があります。どのように最新の "Update 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本質的にバッチスクリプトを終了します。(:EOFE ND O F F ILEで指し示す特殊な事前定義されたラベルです。)

関連する問題