【发布时间】:2019-05-29 15:36:09
【问题描述】:
我正在尝试将主硬盘序列号获取到一个变量,以便稍后成为echoed。
我用过这个,效果很好:
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"
然后我只得到想要的序列号。
问题是当我尝试修改工作代码时,运行 bat 时出现错误:
动词无效。
努力上班:
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
所以我知道该命令有效。
空格是否在中都没关系,我只想要=之后的内容。我在支持 WMIC 的 WINPE 中执行此操作,因此不能选择 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
【问题讨论】:
-
我想像
^=这样转义等号应该可以工作......
标签: batch-file scripting delimiter wmic