2011-08-02 52 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)