Я пытаюсь присвоить переменной только серийный номер первичного жесткого диска, которая будет echo
ed позже.
Я использовал это, и это работает:
for /f "tokens=2 delims== " %%k in ('WMIC path win32_physicalmedia get serialnumber /value') do (for /f "delims=" %%l in ("%%k") do set "SerialNumber=%%l")
Однако это только последний серийный номер, и я хочу получить первичный.
Если бы я использовал эту команду,
"wmic path win32_physicalmedia where tag='\\\\.\\PHYSICALDRIVE0' get serialnumber /value"
тогда я получаю только желаемый серийный номер.
Проблема в том, что когда я пытаюсь изменить рабочий код, я получаю сообщение об ошибке при запуске летучей мыши:
Неверный глагол.
Пытаюсь приступить к работе:
for /f "tokens=2 delims== " %%k in ('wmic path win32_physicalmedia where tag='\\\\.\\PHYSICALDRIVE0' get serialnumber /value') do (for /f "delims=" %%l in ("%%k") do set SerialNumber=%%l)
Ошибки:
Неверный глагол
Если я бегу просто:
wmic path win32_physicalmedia where tag='\\\\.\\PHYSICALDRIVE0' get serialnumber /value in CMD
Получаю следующий результат:
SerialNumber= WD-WCC2E1XJADRT
Итак, я знаю, что команда работает.
Даже не имеет значения, внутри ли пробелы, я просто хочу, что после =
. Я делаю это в WINPE с поддержкой WMIC, поэтому Powershell мне не подходит.
Итого скрипт
@echo OFF
setlocal
for %%v in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do if exist %%v:\drives.txt set w=%%v
for /f "tokens=2 delims== " %%k in ('wmic path win32_physicalmedia where tag='\\\\.\\PHYSICALDRIVE0' get serialnumber /value)') do (for /f "delims=" %%l in ("%%k") do set SerialNumber=%%l)
for /F "tokens=2" %%i in ('date /t') do set "Date=%%i"
echo %SerialNumber%,%Date% >> %w%:\drives.txt
^=
, должно работать ... - person aschipfl   schedule 29.05.2019