Я пытался создать для моей команды более простой способ получения статуса устройства блокировки битов в нашей сети. После проверки множества отдельных ответов здесь и на других сайтах мне удалось собрать воедино почти рабочий пакетный сценарий, однако, похоже, он не обрабатывает запись правильно. Код ниже:
@echo off
color a
title BitLocker Checking
:start
cls
setlocal EnableDelayedExpansion
set i=0
for /F %%a in ('net view') do (
set line=%%a
if "!line:~0,2!" equ "\\" (
set /A i+=1
echo [!i!] !line:~2!
set comp[!i!]=!line:~2!
)
)
echo.
echo.
echo Choose a computer.
choice /c 12345678 >nul
set name=!comp[%errorlevel%]!
cls
for /f "tokens=1,2 delims=[]" %%A in ('manage-bde -status -computername %name% ^| find "Conversion Status"') do set derp=%%B
if "%name%"=="" goto start
echo The status of %name% is %derp%
echo.
echo.
echo %derp% | clip
echo. %derp% copyied to clipboard.
echo.
echo Press any key.
pause
goto start
Когда я изолирую строку manage-bde -status -computername %name% | find "Conversion Status"
и сообщаю ей имя компьютера, кажется, что строка статуса преобразования корректно выводится (например, «Состояние преобразования: полностью расшифровано», если на машине отключен битлокер).
Однако, если оставить его в контексте командного файла, он выдает «Состояние computernamegoeshere is», а затем пустое значение, как будто он не получает данные из команды Find в переменную% B.
У кого-нибудь есть предложения? Прошло много времени с тех пор, как я написал пакетные команды, поэтому немного заржавел.