从fortify命令表中获取ID

时间:2018-05-17 14:37:02

标签: batch-file cmd

使用用户输入的变量,我试图制作一个自动执行强化扫描的.bat(并上传它,但在这里不太重要)。但是,在我向用户询问以下内容后,我仍然坚持使用for循环命令:

  • 用户名(%user%)
  • 密码(%pwd%)
  • 项目(%project%)
  • 版本(%version%)

我正在堆叠的部分是从下表中检索来自fortifyclient命令的ID,其中用户和密码是我向用户询问的变量:

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

我不需要上述内容,我希望只获得ID,29153。我该如何获得?

有没有比我做的更好的方式?

P.S。:我不负责提供这些表格列并设置强化项目。

P.P.S:上面的for循环使用直接cmd输入的语法,因为我想先测试它。

编辑:对此前的不良解释道歉。

2 个答案:

答案 0 :(得分:1)

使用此代码做一些假设,我不是最伟大的心灵读者。你说你只想要这个ID所以你应该只是想获得令牌1。

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

答案 1 :(得分:0)

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和{{的所有提及1}}到%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"