Batch - цикл через строку с разделителями-запятыми - PullRequest
0 голосов
/ 05 июня 2018

Я пытаюсь перебрать поля для wmic, чей вывод затем записывается в текстовый файл.

В конце концов, цель состоит в том, чтобы получить файл аппаратной информации с разделителями табуляции (или другой),Кажется, я не могу пройти цикл после первой команды, выполнение заканчивается при первом выполнении каждого цикла.

До сих пор не работал с пакетным файлом, пожалуйста, помогите мне разобраться с этим.

::@ECHO OFF

:: Prompt user for computer name
SET /P id="Enter Computer Name: "

::Fetch IP
FOR /F "skip=4 usebackq tokens=2" %%a IN (`nslookup %id%`) DO (
SET ip=%%a
)

::Change working directory to .bat file location
CD %~dp0

::Creates/Clears record.
break > %id%.txt

REM Level 1: Loops through fields to be pulled
FOR /F "tokens=1* delims=," %%c IN ("computersystem get name,computersystem get name,computersystem get name") DO (

    REM Level 2: Pulls value in key=value format, parses value by '=' delimiter
    FOR /F "tokens=2 delims==" %%x IN ('
        wmic %%c /value
    ') DO (
        REM Level 3: Removes line carriage, adds a <tab> character. 
        FOR /f %%z IN ("%%x") DO (
            <nul set /p = %%z
            <nul set /p = " "
        )>> %id%.txt
    )

)

1 Ответ

0 голосов
/ 05 июня 2018

Вы, кажется, используете цикл For /F в Level 1: вместо стандартного цикла For:

@Echo Off
CD /D "%~dp0"
Set /P "ID=Enter Computer Name: "
For /F "Tokens=2" %%A In ('NSLookUp %ID% 2^>Nul') Do Set "IP=%%A"
(For %%A In ("ComputerSystem Get Name","ComputerSystem Get Name",
 "ComputerSystem Get Name") Do For /F "Tokens=1* Delims==" %%B In (
    'WMIC %%~A /Value 2^>Nul') Do For /F "Tokens=*" %%D In ("%%~C"
) Do <Nul Set /P=%%D    )>"%ID%.txt"

Примечание: Пробел передконечная закрывающая скобка представляет собой TAB

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...