batch-file - 输出变量的 CMD 子串提取

标签 batch-file substring csv

寻找有关在批处理脚本中对命令输出的变量执行子字符串提取的指导。具体来说,我使用的命令是 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/

相关文章:

regex - 如何提取 Postgresql 中星号之间的文本?

python - 通过 Python 在 CSV 的第二行插入新行

json - Json 的 Jmeter CSV 文件

shell - 如何理解批处理文件?

file - 批处理脚本等待文件在 FTP 服务器上生成并下载

java - 线程中的异常 "main"java.lang.StringIndexOutOfBoundsException : String index out of range: 1

r - 在字符串中的随机位置插入随机字母

csv - 有没有一种方法可以将csv文件中的每一行填充到不同的文本文件中?

windows - 调用 mvn tomcat :run in multiple projects/different directories using a batch file

python - 从 Windows cmd 为多个文件运行 python 脚本