Batch file SystemInfo-通过CMD获取计算机系统模型-额外空间错误
我正在尝试通过批处理文件获取计算机系统模型类型。 为此,我创建了以下脚本:Batch file SystemInfo-通过CMD获取计算机系统模型-额外空间错误,batch-file,space,extra,sysinfo,Batch File,Space,Extra,Sysinfo,我正在尝试通过批处理文件获取计算机系统模型类型。 为此,我创建了以下脚本: systeminfo | find "System Model" > %temp%\TEMPSYSINFO.txt for /F "tokens=2 delims=:" %%a in (%temp%\TEMPSYSINFO.txt) do set SYSMODEL=%%a del %temp%\TEMPSYSINFO.txt set SYSMODEL=%SYSMODEL:~1% echo %SYSMODEL% &g
systeminfo | find "System Model" > %temp%\TEMPSYSINFO.txt
for /F "tokens=2 delims=:" %%a in (%temp%\TEMPSYSINFO.txt) do set SYSMODEL=%%a
del %temp%\TEMPSYSINFO.txt
set SYSMODEL=%SYSMODEL:~1%
echo %SYSMODEL% >%temp%\SYSMODEL.txt
del %temp%\SYSMODEL.txt
set "Line1=*** System Model: %SYSMODEL%"
echo %Line1%
但当我运行它时,我会得到额外的空间:
*** System Model: OptiPlex 9010
知道我该怎么修吗?你做得很辛苦。使用
wmic
。这是一个更快,更不复杂的刮
for /f "tokens=2 delims==" %%I in ('wmic computersystem get model /format:list') do set "SYSMODEL=%%I"
set "Line1=*** System Model: %SYSMODEL%"
echo %Line1%
wmic
允许您查询各种整洁的wmi垃圾<代码>wmic/?了解更多信息
(根据Fuzzy Button的回答更新了OP的评论)你做得很艰难。使用
wmic
。这是一个更快,更不复杂的刮
for /f "tokens=2 delims==" %%I in ('wmic computersystem get model /format:list') do set "SYSMODEL=%%I"
set "Line1=*** System Model: %SYSMODEL%"
echo %Line1%
wmic
允许您查询各种整洁的wmi垃圾<代码>wmic/?了解更多信息
(根据操作人员在Fuzzy Button的回答下的评论进行更新)为了它的价值,我尝试了这个,它将所有双空格替换为零,
使用
echo=%SYSMODEL%=
生成:=my sysmodel=
(只有一个尾随空格):)
set SYSMODEL=%SYSMODEL:=%
编辑因此,使用Peter的优秀建议,将管道命令放入/F的
中,我以前尝试过,但没有成功,而是使用了一个简单的
,而不是^
:)
编辑2
rojo的答案很好,但它仍然为我留下了后续空间,所以我最终还是使用了%var:=%
技巧
for /f "tokens=2 delims==" %%a in ('wmic computersystem get model /format:list') do set SYSMODEL=%%a
set SYSMODEL=%SYSMODEL: =%
echo =%SYSMODEL%=
为了它的价值,我尝试了这个,它将所有双空格替换为零,
使用echo=%SYSMODEL%=
生成:
=my sysmodel=
(只有一个尾随空格):)
set SYSMODEL=%SYSMODEL:=%
编辑
因此,使用Peter的优秀建议,将管道命令放入/F的中,我以前尝试过,但没有成功,而是使用了一个简单的
,而不是^
:)
编辑2
rojo的答案很好,但它仍然为我留下了后续空间,所以我最终还是使用了%var:=%
技巧
for /f "tokens=2 delims==" %%a in ('wmic computersystem get model /format:list') do set SYSMODEL=%%a
set SYSMODEL=%SYSMODEL: =%
echo =%SYSMODEL%=
你可以用
for /F "tokens=2* delims=: " %%a in (%temp%\TEMPSYSINFO.txt) do set SYSMODEL=%%b
意思是使用分隔符冒号或空格,使文本标记为3,但作为文本可能?包括冒号或空格,*
表示“标记2
第一个提到的标记(2)是分配给
%%a的标记,其次是分配给
%%b的最高标记(*)`
现在您也可以编写代码了
for /F "tokens=2* delims=: " %%a in (
'systeminfo 2^>nul ^| find "System Model" '
) do set SYSMODEL=%%b
这意味着您不需要tempsynfo.txt文件。这将执行单引号命令行-就FOR而言,特殊字符
和|
需要插入符号(^
)来“转义”(关闭其特殊含义)(它们属于引号命令
,而不是FOR)
2>nul将禁止显示SYSTEMINFO进度文本
打破这条线是很合理的——只是在你做这件事的地方要小心。使代码更具可读性。您可以使用
for /F "tokens=2* delims=: " %%a in (%temp%\TEMPSYSINFO.txt) do set SYSMODEL=%%b
意思是使用分隔符冒号或空格,使文本标记为3,但作为文本可能?包括冒号或空格,*
表示“标记2
第一个提到的标记(2)是分配给
%%a的标记,其次是分配给
%%b的最高标记(*)`
现在您也可以编写代码了
for /F "tokens=2* delims=: " %%a in (
'systeminfo 2^>nul ^| find "System Model" '
) do set SYSMODEL=%%b
这意味着您不需要tempsynfo.txt文件。这将执行单引号命令行-就FOR而言,特殊字符
和|
需要插入符号(^
)来“转义”(关闭其特殊含义)(它们属于引号命令
,而不是FOR)
2>nul将禁止显示SYSTEMINFO进度文本
打破这条线是很合理的——只是在你做这件事的地方要小心。使代码更具可读性。欢迎来到S.O.Eliran!既然你是新来的,那么看看如何将答案标记为已接受可能不是一个坏主意。欢迎来到S.O.Eliran!因为你是新来的,所以检查一下如何将答案标记为已接受可能不是一个坏主意。谢谢!我发现“wmic computersystem get model”的速度要快得多,但现在我需要弄清楚如何将带有此命令的模型字符串放入set“Line1=***系统模型:%SYSMODEL%”中@eliankohen-我更新了我的答案以满足您的请求。谢谢!我发现“wmic computersystem get model”的速度要快得多,但现在我需要弄清楚如何将带有此命令的模型字符串放入set“Line1=***系统模型:%SYSMODEL%”中@eliankohen-我更新了我的答案以满足您的请求。