使用用户输入的变量,我试图制作一个自动执行强化扫描的.bat(并上传它,但在这里不太重要)。但是,在我向用户询问以下内容后,我仍然坚持使用for循环命令:
我正在堆叠的部分是从下表中检索来自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输入的语法,因为我想先测试它。
编辑:对此前的不良解释道歉。
答案 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"
。