Неожиданный выход из пакетного раздела Windows - PullRequest
1 голос
/ 09 сентября 2010

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

По некоторым причинам при некоторых обстоятельствах вызывается versionInfo.bat -maintenancePackages, но следующий код (проверьтедля manageprofiles.bat) похоже, что он возвращается из раздела: check после вызова versionInfo.

Мои навыки пакетной записи Windows очень устарели, другие улучшения приветствуются.

@echo off
SetLocal EnableDelayedExpansion

set tmpfile=%TEMP%\tmpdone.txt

echo. > %tmpfile%
For /F "eol= delims=| tokens=13" %%a in (%windir%\vpd.properties) Do (
set check=%%a
call :check
)
goto eof

:check
Set skip=No
For /F "eol= delims=|" %%a in (%tmpfile%) Do (
if "%%a" == "%check%" set skip=YES
)

if %skip% == YES goto eof
echo %check%>>%tmpfile%
if exist "%check%\bin\versionInfo.bat" "%check%\bin\versionInfo.bat" -maintenancePackages
echo %check%\bin\manageprofiles.bat
if exist "%check%\bin\manageprofiles.bat" "%check%\bin\manageprofiles.bat" -listProfiles
goto eof

:del
echo Done
del %tmpfile%

:eof

1 Ответ

2 голосов
/ 09 сентября 2010

Вам необходимо использовать call для запуска пакетных файлов из другого пакетного файла.В противном случае cmd не вернется из вызванного.Поэтому ваш код должен выглядеть следующим образом:

if exist "%check%\bin\versionInfo.bat" call "%check%\bin\versionInfo.bat" -maintenancePackages
echo %check%\bin\manageprofiles.bat
if exist "%check%\bin\manageprofiles.bat" call "%check%\bin\manageprofiles.bat" -listProfiles
goto :eof

(Также нет необходимости в метке перехода :eof, вы можете просто использовать специальный синтаксис goto :eof для непосредственного выхода из пакетного файла. Обычно я использую только такойпереходите с метки, если сначала мне нужно выполнить очистку, но потом я называю ее иначе, чтобы избежать путаницы: -))

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