【问题标题】:Checking substring in String for each output line in command prompt在命令提示符下检查每个输出行的字符串中的子字符串
【发布时间】:2019-06-08 13:39:02
【问题描述】:

在这里Get command prompt out on one line,在https://stackoverflow.com/users/2152082/stephan 的支持下 我可以在一行上得到输出,但是现在我在命令提示符下为每个输出行检查字符串中的子字符串时遇到问题。

我想这样输出:

HDD0 三星 EVO 12345678 字节

USB1宇瞻粘滞77777777777字节

HDD2 西方 33442134566 字节

for /f "skip=2 tokens=2 delims=," %%a in (' "wmic path Win32_DiskDrive get MediaType /format:csv" ') do (
    echo %%a
    REM I need check if it containing string Removable
    if "%%a"=="Removable" (
        echo is-USB!.
        for /f "skip=2 tokens=2,3,4 delims=," %%a in ('"wmic path Win32_DiskDrive get DeviceID,Model,Size /format:csv"') do (
            REM I need repacle "\\.\PHYSICALDRIVE" to "" in %%a
            echo USB%%a %%b - %%c >> "Disk.txt"
        )
    ) else (
        echo is-HDD!.
        for /f "skip=2 tokens=2,3,4 delims=," %%a in ('"wmic path Win32_DiskDrive get DeviceID,Model,Size /format:csv"') do (
            REM I need repacle "\\.\PHYSICALDRIVE" to "" in %%a
            echo HDD%%a %%b - %%c >> "Disk.txt"
        )
    )
)

输出为空。请帮我。 谢谢。

【问题讨论】:

标签: cmd wmi wmic


【解决方案1】:

Cmd.exe 的字符串处理量有限。这是一个很好的咨询网站。 https://www.dostips.com/DtTipsStringManipulation.php

C:>set "S=MACH001,\\.\PHYSICALDRIVE0,WDC WD1003FZEX-00MK2A0,1000202273280"
C:>set "T=%S:\\.\PHYSICALDRIVE=%"
C:>echo %T%
MACH001,0,WDC WD1003FZEX-00MK2A0,1000202273280

【讨论】:

    【解决方案2】:
    del /f /q "Disk.txt"
    for /f "skip=2 tokens=2,3,4 delims=," %%a in ('"wmic path Win32_DiskDrive get DeviceID,Model,Size /format:csv"') do (
        set "S=%%a %%b - %%c"
        set "T=%S:\\.\PHYSICALDRIVE=%"
        echo %T% >> "Disk.txt"
    )
    

    “Disk.txt”不存在。我哪里错了?。

    【讨论】:

      猜你喜欢
      • 2011-02-18
      • 2012-06-19
      • 1970-01-01
      • 2018-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多