寻找有关在批处理脚本中对命令输出的变量执行子字符串提取的指导。具体来说,我使用的命令是 powershell (Get-CimInstance Win32_OperatingSystem).version
我使用 for /f "tokens=*" %%i in ('"powershell (Get-CimInstance Win32_OperatingSystem).version"') do set OSvar=%%i
成功设置了这个变量
如您所见,我正在查询操作系统版本,并且我有一个未公开的半有效用例,可以使用此特定方法来查找它。即使我使用上述方法查询的推理可能被误导了,我仍然想学习如何对这个输出进行子串提取,以供自己启迪。找到解决方案不如在给定上下文中找到解决方案重要。
显然,这将输出一些结果为“6.2.9200”、“6.3.9600”或“10.0.XXXXXXX”。我想知道如何提取小数点后第二位之前的输出,但我在研究后尝试的所有尝试都失败了,包括设置 delims 和使用等于第一个变量集的第二个变量 :~0,3%
.这里的大师们可以帮助一个人吗?
最佳答案
好吧,将结果拆分为 。
@echo off
for /f "tokens=1,2delims=." %%i in ('powershell (Get-CimInstance Win32_OperatingSystem^).version') do (
set "OSvar=%%i.%%j"
)
echo %OSvar%
或来自相同代码的单行代码:
@echo off
for /f "tokens=1,2delims=." %%i in ('powershell (Get-CimInstance Win32_OperatingSystem^).version') do echo %%i.%%j
您也可以使用标准的 ver
命令;
@for /f "tokens=1-5,*delims=. " %%i in ('ver') do @set OSvar=%%l.%%m
按要求进行解释。
看到我们用 .
拆分字符串时,每个标记都被分配给一个元变量。换一种说法。假设它是 windows 10.0.18362.959
然后 tokens=1,2
将分配 10
给 %%i
并且0
到 %%j
关于batch-file - 输出变量的 CMD 子串提取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63324725/