Computername является переменной окружения, поэтому сравнение должно проводиться без учета регистра. Используйте параметр /I
, чтобы выполнить поиск без учета регистра
. Вам нужно иметь одинаковые кавычки с обеих сторон уравнения
IF/I "%computername%" == "<value>" ....
. ^ ^ ^ ^
. ^ ^ ^ ^
Обратите внимание на кавычки вокруг% computername% иоколо <value>
.
Логика подстановочных знаков не будет работать, но простой метод - использовать сравнение подстрок. Вы всегда сравниваете 3 символа, так что вы можете изменить логику на что-то вроде:
if /I "%COMPUTERNAME:~0,3%" == "Bow" .....
Это начинается в начале (индекс 0) и создает строку длины 3, а затем сравнивает это с Bow, чтобы сделатьсравнение строк без учета регистра, где цитирование совпадает с обеих сторон
Рассмотрим следующий альтернативный скрипт
- один набор совпадающих pushd / popd
- Использование вспомогательных функций
withDistribRestart
и noDistribRestart
для запуска соответствующих сценариев, где переданный параметр является именем выполняемого пакетного сценария - Проверяет и сообщает неожиданные имена компьютеров
@ECHO OFF
GOTO :Main
REM =========================================================================
:Main
SETLOCAL
SET "retVal=0"
pushd "\\scriptserver\unlock scripts"
if /I "%COMPUTERNAME:~0,3%" == "Bow" (
CALL :withDistribRestart Bow
) else if /I "%COMPUTERNAME:~0,3%" == "Del" (
CALL :withDistribRestart Del
) else if /I "%COMPUTERNAME:~0,3%" == "Fin" (
CALL :withDistribRestart Fin
) else if /I "%COMPUTERNAME:~0,3%" == "Gah" (
CALL :withDistribRestart Gah
) else if /I "%COMPUTERNAME:~0,3%" == "Gib" (
CALL :withDistribRestart Gib
) else if /I "%COMPUTERNAME:~0,3%" == "Kal" (
CALL :withDistribRestart Kal
) else if /I "%COMPUTERNAME:~0,3%" == "Ken" (
CALL :withDistribRestart Ken
) else if /I "%COMPUTERNAME:~0,3%" == "Lei" (
CALL :withDistribRestart Lei
) else if /I "%COMPUTERNAME:~0,3%" == "Lew" (
CALL :withDistribRestart Lew
) else if /I "%COMPUTERNAME:~0,3%" == "Lim" (
CALL :withDistribRestart Lim
) else if /I "%COMPUTERNAME:~0,3%" == "Loa" (
CALL :withDistribRestart Loa
) else if /I "%COMPUTERNAME:~0,3%" == "Mar" (
CALL :withDistribRestart Mar
) else if /I "%COMPUTERNAME:~0,3%" == "Ott" (
CALL :withDistribRestart Ott
) else if /I "%COMPUTERNAME:~0,3%" == "Pem" (
CALL :withDistribRestart Pem
) else if /I "%COMPUTERNAME:~0,3%" == "Ric" (
CALL :withDistribRestart Ric
) else if /I "%COMPUTERNAME:~0,3%" == "Sha" (
CALL :withDistribRestart Sha
) else if /I "%COMPUTERNAME:~0,3%" == "Wes" (
CALL :noDistribRestart Wes
) else (
ECHO Unexpected COMPUTERNAME '"%COMPUTERNAME%"'
SET "retVal=1"
)
popd
(ENDLOCAL
EXIT /B %retVal%)
REM ========================================================================
:withDistribRestart
SETLOCAL
SET "PREFIX=%~1"
CALL "%PREFIX%.bat"
CALL "DistributionRestart.bat"
(ENDLOCAL
EXIT /B 0)
REM ========================================================================
:noDistribRestart
SETLOCAL
SET "PREFIX=%~1"
CALL "%PREFIX%.bat"
(ENDLOCAL
EXIT /B 0)