Получить идентификатор из таблицы команды fortify - PullRequest
0 голосов
/ 17 мая 2018

Используя введенные пользователем переменные, я пытаюсь создать .bat, который выполняет автоматическое сканирование для фортификации (и загружает его, но здесь это менее важно).Тем не менее, я застрял в команде цикла for после того, как я попросил пользователя:

  • имя пользователя (% user%)
  • пароль (% pwd%)
  • проект (% проект%)
  • версия (% версия%)

Часть, в которой я работаю, получает идентификатор из приведенной ниже таблицы, которая исходит откоманда fortifyclient, где user и password являются переменными, которые я спрашиваю у пользователя:

fortifyclient listProjectVersions -user %user% -password %pwd% -url https://fortify:0000/ssc

ID      Name                    Version
29153   Sales Dep.              Gdpr
xxx     Xxx                     Xxx

Я могу установить переменные, получить имя проекта и что-то с ними сделать, используя приведенную ниже команду, которая получаетприведенная выше таблица, однако, я еще не там.

for /f "tokens=1,2,4 delims=" %F in ('fortifyclient listProjectVersions -user %user% -password %pwd% -url https://fortify:0000/ssc ^| find "%project%"') do @(for %A in (%F) do @echo %A)

Приведенная выше команда дает мне следующий результат, если для проекта задано значение "Gdpr" и клиент предоставляет свои учетные данные:

29153
Sales
Dep.
Gdpr

Мне не нужно выше,Я хочу получить только удостоверение личности, 29153. Как мне это получить?

Есть ли способ получше, чем я это сделал?

PS: Я 'Я не несу ответственности за предоставление этих столбцов таблицы и настройку проектов fortify.

PPS: Приведенный выше цикл for использует синтаксис для прямого ввода cmd, потому что я сначала хотел его протестировать.

Edit: Извинения за плохое объяснение ранее.

Ответы [ 2 ]

0 голосов
/ 17 мая 2018
SET "flag=Y"&for /f "tokens=1,2,4 delims=" %F in ('fortifyclient listProjectVersions -user xxx -password xxx -url https://fortify:0000/ssc ^| find "Gdpr"') do @(for %A in (%F) do IF DEFINED flag @echo %A&SET "flag=")

Конечно, это предполагает, что вы выполняете эту команду непосредственно из приглашения, что нелогично.Если вы вставите код в пакетный файл, вы можете выполнить его несколько раз, просто введя batchfilename - но вам нужно будет изменить все упоминания metavariables %F и %A на %%F и %%A


После прояснения и выяснения ситуации gdpr:

Выше все равно должно было сработать (из подсказки - замените %F на %%F и %Aс %%A для строки пакетного файла.)

for /f "tokens=1 delims= " %%F in ('fortifyclient listProjectVersions -user xxx -password xxx -url https://fortify:0000/ssc ^| find "Gdpr"') do echo %%F

должна работать как строка пакетного файла.Естественно, set "ID=%%F" вместо echo %%F, если вы хотите установить переменную.

0 голосов
/ 17 мая 2018

Делая несколько предположений с этим кодом, я не лучший читатель разума.Вы сказали, что вам нужен только идентификатор, поэтому вы должны пытаться получить токен 1.

for /f "tokens=1" %F in ('fortifyclient listProjectVersions -user xxx -password xxx -url https://fortify:0000/ssc ^| find "Gdpr"') do echo %F
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...