无法在windows 10中cmd内的IF语句中实现CURL命令

无法在windows 10中cmd内的IF语句中实现CURL命令,curl,cmd,Curl,Cmd,我正在尝试制作一个简单的网页检查器,可以根据页面返回的状态(例如200、301、302和404)执行某些操作 我已经尝试了很多版本的代码来让它工作,我会在下面发布我认为最有意义和最远的版本 测试#1 结果是:https://www.microsoft.com/en-us/store"这个时候出人意料 测试#2: 好吧,既然这不起作用,让我在一个空白cmd中测试curl out,而不用在脚本中运行它 curl -i https://www.microsoft.com/en-us/store | f

我正在尝试制作一个简单的网页检查器,可以根据页面返回的状态(例如200、301、302和404)执行某些操作

我已经尝试了很多版本的代码来让它工作,我会在下面发布我认为最有意义和最远的版本

测试#1

结果是:https://www.microsoft.com/en-us/store"这个时候出人意料

测试#2: 好吧,既然这不起作用,让我在一个空白cmd中测试curl out,而不用在脚本中运行它

curl -i https://www.microsoft.com/en-us/store | findstr "301"
上面的测试工作得很好,返回了301,这太棒了!但问题是,在脚本和IF语句中运行时,代码不起作用,我只是不断遇到错误,永远无法通过此错误。知道我做错了什么吗

提前感谢您的帮助,我希望大家今天过得愉快。

阅读更多:

尝试使用
curl
命令输出重定向到
findstr
,以
/行的开头
,并应用操作符
&
返回0
),并抑制任何输出
>nul

curlfindstr/bhttp/1\.1.*200>nul&&echo\zOk!
  • 一个简单的方法:
@echo off&setlocal EnableDelayedExpansion
rem::请求初始化信息(字符串输入)
设置/p“\u url=要扫描哪个页面:”
rem::使用Microsoft网站作为测试站点
设置“\u网站URL”=https://www.microsoft.com/!\u网址
rem::开始扫描,仅获取标题信息以节省带宽,我不能使用grep,因为我在windows计算机上,如果匹配(&&)转到:下一步
2> &1%\uuuuu-APPDIR\uuuu%curl.exe-i“!\u网站URL!”\124;%\ uuuuuu-APPDIR\uuu%findstr.exe/b HTTP/1\.1.*200>nul&&echo\Great页面存在goto=:下一个
2> &1%\uuuuu-APPDIR\uuuuu%curl.exe-i“!\u网站URL!”\124;%\ uuuuuu-APPDIR\uuuu%findstr.exe/b HTTP/1\.1.*404>nul&&echo\页面不存在&&goto=:下一步
2> &1%\uuuu-APPDIR\uuuu%curl.exe-i“!\u网站URL!”\124;%\ uuuu-APPDIR\uuu%findstr.exe/b HTTP/1\.1.*301>nul&&echo\此页面被永久移动(&goto=:下一步
2> &1%\uuuuu-APPDIR\uuuuu%curl.exe-i“!\u网站URL!”\124;%\ uuuuuu-APPDIR\uuuu%findstr.exe/b HTTP/1\.1.*302>nul&&echo\此页面被临时移动(&goto=:下一步
rem::如果上面每个curl命令的任何字符串输出与任何[200 | 301 | 302 | 404]字符串不匹配,则从服务器获取输出
echo\None found:[200^ 404^ 301^ 302]&2>&1%\uuuuuu-APPDIR\uuuuuuu%curl.exe-i“!\uwebsiteurl!”\uuuuuuuuu-APPDIR\uuuuuuuu%findstr.exe/bhttp.1\.[0-9]>con:&goto=:下一步
:下一个
rem/在这里做更多…&端部
  • 输入和输出网站https://www.microsoft.com/store
要扫描哪一页?:存储
此页面暂时移动
  • 输入和输出网站https://outlook.live.com/mail/0/
要扫描哪个页面?:收件箱
未找到:[200 | 404 | 301 | 302]
HTTP/1.1 440登录超时
  • 输入和输出网站https://live.com
要扫描哪一页?:邮件
此页面将永久移动

  • 一个非简单的方法:
@echo关闭
setlocal EnableDelayedExpansion
颜色0A和标题

阅读更多:

尝试使用
curl
命令输出重定向到
findstr
,以
/行的开头
,并应用操作符
&
返回0
),并抑制任何输出
>nul

curlfindstr/bhttp/1\.1.*200>nul&&echo\zOk!
  • 一个简单的方法:
@echo off&setlocal EnableDelayedExpansion
rem::请求初始化信息(字符串输入)
设置/p“\u url=要扫描哪个页面:”
rem::使用Microsoft网站作为测试站点
设置“\u网站URL”=https://www.microsoft.com/!\u网址
rem::开始扫描,仅获取标题信息以节省带宽,我不能使用grep,因为我在windows计算机上,如果匹配(&&)转到:下一步
2> &1%\uuuuu-APPDIR\uuuu%curl.exe-i“!\u网站URL!”\124;%\ uuuuuu-APPDIR\uuu%findstr.exe/b HTTP/1\.1.*200>nul&&echo\Great页面存在goto=:下一个
2> &1%\uuuuu-APPDIR\uuuuu%curl.exe-i“!\u网站URL!”\124;%\ uuuuuu-APPDIR\uuuu%findstr.exe/b HTTP/1\.1.*404>nul&&echo\页面不存在&&goto=:下一步
2> &1%\uuuu-APPDIR\uuuu%curl.exe-i“!\u网站URL!”\124;%\ uuuu-APPDIR\uuu%findstr.exe/b HTTP/1\.1.*301>nul&&echo\此页面被永久移动(&goto=:下一步
2> &1%\uuuuu-APPDIR\uuuuu%curl.exe-i“!\u网站URL!”\124;%\ uuuuuu-APPDIR\uuuu%findstr.exe/b HTTP/1\.1.*302>nul&&echo\此页面被临时移动(&goto=:下一步
rem::如果上面每个curl命令的任何字符串输出与任何[200 | 301 | 302 | 404]字符串不匹配,则从服务器获取输出
echo\None found:[200^ 404^ 301^ 302]&2>&1%\uuuuuu-APPDIR\uuuuuuu%curl.exe-i“!\uwebsiteurl!”\uuuuuuuuu-APPDIR\uuuuuuuu%findstr.exe/bhttp.1\.[0-9]>con:&goto=:下一步
:下一个
rem/在这里做更多…&端部
  • 输入和输出网站https://www.microsoft.com/store
要扫描哪一页?:存储
此页面暂时移动
  • 输入和输出网站https://outlook.live.com/mail/0/
要扫描哪个页面?:收件箱
未找到:[200 | 404 | 301 | 302]
HTTP/1.1 440登录超时
  • 输入和输出网站https://live.com
要扫描哪一页?:邮件
此页面将永久移动

  • 一个非简单的方法:
@echo关闭
setlocal EnableDelayedExpansion

颜色0A&title问题似乎是您对要使用哪个shell感到困惑。使用
cmd.exe
powershell.exe
作为它的“shell”,
bash
是基于“shell”的。当您使用[]标记时,我们将假设您使用它作为“shell”,因此需要使用
cmd.exe
命令语法,而不是
bash
语法,您似乎已经使用它作为您发布的一些代码的基础。是的,y
curl -i https://www.microsoft.com/en-us/store | findstr "301"