微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

wmic内存芯片获取容量| findstr [0-9] 在 FOR 循环之外和在 FOR 循环中时显示不同的行为

如何解决wmic内存芯片获取容量| findstr [0-9] 在 FOR 循环之外和在 FOR 循环中时显示不同的行为

例如,这段代码工作正常

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
 (

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

解决方法

当您在 | 命令中使用 ^| 时,您应该将 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

批处理文件:

<RNDateTimePicker mode="time" />

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。