пакетный сценарий - PullRequest
       1

пакетный сценарий

0 голосов
/ 02 августа 2011

Введение: я новичок в пакетных сценариях.Желает получить информацию о следующих сценариях.

Цель: необходимо написать пакетную команду для обновления приложения.А затем прочитайте журнал, созданный после обновления приложения, чтобы проверить его успешность.

Я запускаю приложение, используя простой командный файл, который имеет команду

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

Лог-файл (xyz.log) для результата, сгенерированный в

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

Я хочу, чтобы мой пакетный файл выполнил первую команду и прочитал результатысгенерировано в файле журнала (поиск по успешной строке).

Могу ли я получить какие-либо данные по этому вопросу, пожалуйста.

Ответы [ 2 ]

3 голосов
/ 02 августа 2011

Это НЕ проверено, но это хорошая отправная точка, и вы можете использовать ее для изучения некоторых команд MS-DOS / batch. Если вам нужна специальная синтаксическая справка, введите в командной строке [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

Edit: используется find вместо цикла for. +1 и спасибо Андрею М

1 голос
/ 02 августа 2011

Вы можете использовать команду FIND для поиска в файле строки:

FIND "success" "%TEMP%\Application\xyz.log" >NUL && (ECHO Update successful) || (ECHO Update failed)
  • %TEMP% оценивает системную временную папку для текущего пользователя.

  • >NUL подавляет вывод команды FIND.

  • && передает управление следующей команде (ECHO), еслистрока была найдена.

  • || передает управление команде после нее (другой ECHO), если поиск не удался.

Если вы хотите выполнить более одной команды в результате FIND, вы можете использовать что-то вроде этого:

FIND "<i>string</i>" <i>file_name</i> && (<i>command1</i> & <i>command2</i> & …) || (<i>command3</i> & <i>command4</i> & …)

В качестве альтернативы вы можете использовать команду GOTO.Например, вот так:

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

:searchfailed
<i>series of commands as a result of unsuccessful search</i>

:<i>label_name</i> - это объявление метки.GOTO searchfailed означает переход на строку, где объявлена ​​метка searchfailed.

GOTO :EOF по существу выходит из пакетного сценария.(:EOF - это специальная предопределенная метка, которая указывает на E nd O f F ile.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...