【问题标题】:Strip trailing spaces from variable从变量中去除尾随空格
【发布时间】:2021-10-22 04:56:25
【问题描述】:

Windows 10 批处理文件

试图从变量中去除尾随空格。这是我到目前为止所拥有的......

For /F "Tokens=1* Delims= " %%A In ('WMIC Path Win32_VideoController Get Name^,DriverVersion^|FindStr /I "Intel"') Do @Set GFXNAM=%%B&SetGFXVER=%%A

这样,我得到了正确填充的两个变量......

GFXNAM=[英特尔(R) 超高清显卡 630          ]
GFXVER=[27.20.100.9316]
(已添加括号以显示变量中的尾随空格)

但是,我需要一种方法来修剪 GFXNAM 变量末尾的那些尾随空格。不幸的是,由于 GFXNAM 变量值中的括号,我无法使用 for 循环以及沿以下行的变量操作...

(set NEWGFXNAM=%GFXNAM:~0,-1%)

由于那些可爱的毒字符,它失败了。我需要做的就是能够从 GFXNAM 变量中去除那些尾随空格。应该没那么难,只是我看不出来。

任何帮助将不胜感激。

提前致谢。

【问题讨论】:

  • 不要将表输出用于 WMIC 命令。查看使用/Format 选项的可用选项,即/Format:List/Format:CSV/Format:MOF
  • 好吧,如果我使用 PowerShell 而不是批处理文件,那将非常有效。 (笑)
  • 我在几乎所有的 WMIC 批处理脚本中都使用了它们,最常见的是 MOF,猜猜看,我的所有脚本都能完美运行
  • 抱歉,我的评论并不是负面或不正确的。
  • 那是因为list会在不同的行输出每个结果,所以findstr只会匹配包含字符串Intel的行!无论如何,您不需要为此使用findstr.exe,WMI 已经允许 WQL 查询,因此请使用它来选择仅以字符串Intel 开头的Name。如果不出意外的话,在流程的上层进行过滤比以后更有效。

标签: batch-file cmd windows-10


【解决方案1】:

这是一个使用我的评论的简单示例,并且基于您的 PC 中只有一个英特尔显卡:

@Echo Off
SetLocal EnableExtensions
Set "GFXNam="
Set "GFXVer="
For /F Tokens^=6^ Delims^=^" %%G In ('%SystemRoot%\System32\wbem\WMIC.exe Path
 Win32_VideoController Where "Name Like 'Intel%%'" Get Name^, DriverVersion
 /Format:MOF 2^>NUL') Do If Not Defined GFXVer (Set "GFXVer=%%G"
) Else Set "GFXNam=%%G"
Set GFX 2>NUL
Pause

如果您想检查它是否正确定义了变量,可以将Set GFX 2>NUL 替换为If Defined GFXVer If Defined GFXNam Echo Name: [%GFXNam%], Version: [%GFXVer%]

【讨论】:

    猜你喜欢
    • 2022-06-15
    • 2017-01-22
    • 2011-08-28
    • 2019-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-02
    相关资源
    最近更新 更多