Если вы не хотите использовать для этого другой встроенный язык сценариев, а для чтения вашего файла используются стандартные окончания строк в Windows, у меня есть альтернативная идея.
Вместо прямого поиска строк сID: {…
, вы можете найти <Anything><Carriage Return><Line Feed><Space(s)><Password:>
. Вы могли бы дополнительно уточнить <Anything>
, если вы чувствуете необходимость, но в этом случае я не думаю, что это необходимо :
@Echo Off
SetLocal DisableDelayedExpansion
Set "Src=input.txt"
Set "Str=Password:"
Set "ID="
(Set LF=^
% 0x0A %
)
For /F %%A In ('Copy /Z "%~f0" Nul')Do Set "CR=%%A"
SetLocal EnableDelayedExpansion
FindStr /RC:".*!CR!*!LF! *%Str%" "%Src%">"%TEMP%\_$.tmp"
EndLocal
For /F "UseBackTokens=2Delims={}" %%A In ("%TEMP%\_$.tmp")Do Set "ID={%%A}"
Del "%TEMP%\_$.tmp"
If Not Defined ID GoTo :EOF
manage-bde -protectors -adbackup c: -id %ID%
В приведенном выше примере я использовал input.txt
в качестве имени текстового файла, который вы читаете, измените его, если необходимо.