我正在尝试制作一个脚本: 向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文件中获取每一行
答案 0 :(得分:4)
首先,您设置VAR
一次,而您的临时文件不存在。然后使用=而不是==并且不使用!
字符进行测试。
并且不要放置太多空格,就像使用像bash这样的真实shell:)
正如Magoo所说,我还必须修复set /p VAR = < tmpFile
以删除多余的空格。批量有倾向于文明。
(另一个示例:echo foo > file
:file
现在包含"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
并发布了名称。