Я пытаюсь создать пакетный скрипт, который использует утилиту кластера для определения VARIABLE1.
Первый IF дает идеальный результат - если COMPUTERNAME не указан в списке, VARIABLE1 установлен.
Проблема в том, что если ERRORLEVEL = 0. Тогда он должен найти строки, начинающиеся с «WINSV», и исключить% COMPUTERNAME%
cluster node | findstr /r "WINSV*" | findstr /v "%COMPUTERNAME%"
Возвращает следующее:
WINSV9999 1 Up
Команда «узел кластера» возвращает:
Node Node ID Status
-------------- ------- ---------------------
WINSV9999 1 Up
WINSV9998 2 Up
Единственное, чего сейчас не хватает, так это как вывести только первые 8 символов в переменную VARIABLE1.Любая подсказка, чего там не хватает?Спасибо за помощь.
set CLUSTERGROUP=CLUSTERNAME
cluster group | find /I "%CLUSTERGROUP%" | find /I "%COMPUTERNAME%" 1>nul 2>&1
if %ERRORLEVEL% GTR 0 (
set VARIABLE1=%COMPUTERNAME%
)
else (
cluster node | findstr /r "WINSV*" | findstr /v "%COMPUTERNAME%"
)
Редактировать: Теперь работа с этим:
set CLUSTERGROUP=CLUSTERNAME
call cluster group | find /I "%CLUSTERGROUP%" | find /I "%COMPUTERNAME%" 1>nul 2>&1
if %ERRORLEVEL% GTR 0 (
set VARIABLE1=%COMPUTERNAME%
) else (
for /F "tokens=1" %%I in ('call cluster node ^| findstr /r "WINSV*" ^| findstr /v "\<%COMPUTERNAME%\>"') do set "VARIABLE1=%%I"
)
Теперь еще одна проблема, так как у меня есть другие уровни ошибок в других сценариях, первая строка неза работой.Как мне его переделать - вывод в VARIABLE1 должен быть% COMPUTERNAME%, если имя узла (значение WINSV9999 в строке, начинающейся с CLUSTERNAME) не совпадает с% COMPUTERNAME%.Любая помощь по этому поводу?Спасибо!
c:>cluster group
Listing status for all available resource groups:
Group Node Status
-------------------- --------------- ------
Available Storage WINSV9999 Offline
Cluster Group WINSV9999 Online
CLUSTERNAME WINSV9999 Online