Проверка подстроки в строке для каждой строки вывода в командной строке - PullRequest
0 голосов
/ 08 июня 2019

Здесь Получить командную строку в одну строку , с поддержкой https://stackoverflow.com/users/2152082/stephan Я могу получить вывод в одну строку, но теперь у меня проблема с проверкой подстроки в строке для каждой строки вывода в командной строке.

Я хочу вывести как это:

HDD0 Samsung EVO 12345678 байт

USB1 Apacer Sticky 77777777777 байт

HDD2 Western 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"
        )
    )
)

Выход пуст. Пожалуйста, помогите мне. Спасибо.

Ответы [ 2 ]

0 голосов
/ 08 июня 2019
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» не существует. Где я не прав?

0 голосов
/ 08 июня 2019

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
...