【问题标题】:wmic memorychip get Capacity | findstr [0-9] show different behavior when outside of FOR cycle and when in FOR cycle [duplicate]wmic memorychip 获取容量 | findstr [0-9] 在 FOR 循环之外和在 FOR 循环中显示不同的行为 [重复]
【发布时间】:2021-01-22 09:35:40
【问题描述】:

例如,这段代码可以正常工作

wmic MEMORYCHIP get Capacity | findstr [0-9] >> D:\ram-cpu.txt

并给出记忆库容量作为输出

但是如果我把这个命令放在循环中

Setlocal EnableDelayedExpansion
@SET /a sl_counter=0
@FOR /F "usebackq" %%a IN (`wmic MEMORYCHIP get Capacity | findstr [0-9]`) DO (
@ECHO SLOT !sl_counter! %%a >> D:\ram-cpu.txt
@SET /a sl_counter=sl_counter+1
)

我收到错误

Unexpected: |.
D:\>@FOR /F "usebackq" %a IN (`wmic MEMORYCHIP get Capacity | findstr [0-9]`) DO
 (

我想我需要添加或修复一些语法,但我不知道该怎么做。

【问题讨论】:

    标签: batch-file cmd wmic


    【解决方案1】:

    for 命令中使用| 时,应将| 转义为^|

    命令行

    @FOR /F "usebackq" %a IN (`wmic MEMORYCHIP get Capacity ^| findstr [0-9]`) DO echo %a
    

    批处理文件:

    @echo off
    @FOR /F "usebackq" %%a IN (`wmic MEMORYCHIP get Capacity ^| findstr [0-9]`) DO Set "Memory=%%a"
        echo %Memory%
    pause
    

    进一步阅读:How-to: Escape Characters, Delimiters and Quotes at the Windows command line.

    【讨论】:

      猜你喜欢
      • 2020-04-05
      • 2020-08-24
      • 2017-09-30
      • 2021-03-02
      • 1970-01-01
      • 1970-01-01
      • 2019-01-17
      • 1970-01-01
      相关资源
      最近更新 更多