В настоящее время я использую Круиз-контроль, чтобы планировать «сборки» для различных внутренних веб-сайтов. Я использую командные файлы для запуска каждой из этих «сборок» (сборка означает определенный вывод веб-справки). Допустим, в качестве примера, у нас есть сборки, помеченные как Internal, External и Public. Внутри мастер-файла вы найдете следующий код:
if x%TargetName:-Internal-=%==x%TargetName% goto ReplaceNav
if x%TargetName:-External-=%==x%TargetName% goto SkipSearch
if x%TargetName:-Public-=%==x%TargetName% goto SkipSearch
:: do not uncomment or the skin will not get copied to the output
Итак, позвольте мне объяснить, что здесь происходит .. Переменная% TargetName% уже имеет значение до запуска этой части сценария. Переменная% TargetName% будет содержать текст -Internal, -External или -Public и будет содержать другие символы в начале или конце каждого целевого имени, но я хочу иметь возможность использовать условный оператор, если скрипт видит -Internal в переменной% TargetName%, затем сценарий будет переходить к блоку кода с меткой:ReplaceNav. Вот что:ReplaceNav выглядит так.
:ReplaceNav
echo.
echo -----------------------------------------------------------------
echo Replacing Navigation.htm and Search.htm files
echo TargetName is %TargetName%
echo CurrUser is %CurrUser%
echo -----------------------------------------------------------------
echo.
pushd ..\..\some\dir\MasterPages
copy /y "Navigation1.COPY" "..\..\..\Output\%CurrUser%\%TargetName%\Skin\Navigation.htm" 2>&1
IF %ERRORLEVEL% NEQ 0 (
echo.
echo Failed to replace Navigation.htm file with Exit Code: %ERRORLEVEL%
echo.
exit /b %ERRORLEVEL%
)
copy /y "Search.COPY" "..\..\..\Output\%CurrUser%\%TargetName%\Skin\Search.htm" 2>&1
IF %ERRORLEVEL% NEQ 0 (
echo.
echo Failed to replace Search.htm file with Exit Code: %ERRORLEVEL%
echo.
exit /b %ERRORLEVEL%
)
popd
ReplaceNav по существу заменяет два файла в выводе веб-справки на две пользовательские страницы, содержащие поисковую систему, доступную только для внутренних пользователей.
Если переменная% TargetName% содержит -External или -Public, пакетный файл ДОЛЖЕН перейти в раздел:SkipSearch пакетного файла.
:SkipSearch
echo.
echo -----------------------------------------------------------------
echo Skipped Search and Navigation Replacement
echo -----------------------------------------------------------------
echo.
Моя проблема заключается в следующем (и я почти уверен, что это связано с неправильной структурой оператора IF): Как мне структурировать этот блок кода
if x%TargetName:-Internal-=%==x%TargetName% goto ReplaceNav
if x%TargetName:-External-=%==x%TargetName% goto SkipSearch
if x%TargetName:-Public-=%==x%TargetName% goto SkipSearch
:: do not uncomment or the skin will not get copied to the output
правильно пройти через переменную% TargetName%, чтобы увидеть, имеет ли она значение -Internal, -External или -Public, а затем перейти к правильному блоку кода в моем сценарии? В настоящее время, кажется, оценивать
if x%TargetName:-Internal-=%==x%TargetName% goto ReplaceNav
оператор, но независимо от того, что он заменяет навигационные страницы в сборках на -External и -Public :( Я должен также упомянуть, что это, если заявление вообще не было написано мной, и если вы можете придумать какой-то другой способ анализа переменная% TargetName% для -Internal, -Public или -External Я все для этого.
Я понимаю, что это довольно странный вопрос, поэтому, пожалуйста, дайте мне знать, если вам нужны какие-либо дополнительные детали, чтобы ответить.