我想用FOR / F运行多个命令

时间:2016-09-17 16:15:43

标签: batch-file for-loop

我正在尝试制作一个脚本: 向url发送请求,然后在FOR / F命令中追加(>>)%%一个变量i如果我从FOR / F运行的命令得到某个响应。 我尝试了两个以下脚本:

FOR /F %%a in (usernames.txt) do (
IF "curl -k -d name=%%a https://club.pokemon.com/api/signup/verify-username" EQU "{"valid":true,"suggestions":[],"inuse":false}" %%a >> usernames1.txt

set /p VAR = < tmpFile
FOR /F %%a in (usernames.txt) do (
curl -k -d name=%%a https://club.pokemon.com/api/signup/verify-username 
> tmpFile
IF VAR={"valid":true,"suggestions":[],"inuse":false}
%%a >> usernames1.txt)
编辑:对于那个剧本来说还不够好,谢谢你们。但我有另一件事:我可以在脚本中添加多于1个变量吗?我的意思是像%% a这样的变量,它从另一个txt文件中获取每一行

1 个答案:

答案 0 :(得分:4)

首先,您设置VAR一次,而您的临时文件不存在。然后使用=而不是==并且不使用!字符进行测试。

并且不要放置太多空格,就像使用像bash这样的真实shell:)

正如Magoo所说,我还必须修复set /p VAR = < tmpFile以删除多余的空格。批量有倾向于文明。

(另一个示例:echo foo > filefile现在包含"foo "

(不用说,如果没有enabledelayedexpansion它也无法工作,因为很多事情都发生在FOR循环中)

固定代码(也必须用额外的引号保护测试字符串,否则不起作用):

setlocal enabledelayedexpansion

del usernames1.txt >NUL 2>NUL
FOR /F %%a in (usernames.txt) do (
curl -k -d name=%%a https://club.pokemon.com/api/signup/verify-username > tmpFile 2>NUL
set /p VAR=<tmpFile
IF "!VAR!"=="{"valid":true,"suggestions":[],"inuse":false}" echo %%a >> usernames1.txt
)

我使用随机的用户名列表对其进行了测试,并通过"valid":true更改"valid":false并发布了名称。