【问题标题】:What's wrong with this BAT file using FINDSTR?使用 FINDSTR 的这个 BAT 文件有什么问题?
【发布时间】:2011-10-19 20:12:22
【问题描述】:

我需要输入一个链接列表,这些链接指向类似格式的页面,但内容不同,只有一个标签。

编辑

input.txt
/category/apples-and-oranges.html
/category/pineapples.html
/category/asparagus.html
/category/brussel-sprouts.html
/category/passion-fruit.html

假设涉及水果的页面有<h1>Fruit!</h1> 而非水果页面没有,但它们属于一个类别。该程序会检查这些对http://www.mysite.com 的扩展,然后创建一个新列表:

output.txt
/category/apples-and-oranges.html
/category/pineapples.html
/category/passion-fruit.html

这是我目前所得到的:

for /f %%A in (input.txt) DO (
    for "tokens=1,2 delims=:" %%b in ('FINDSTR [/R] [/I] [/S] [/C:"<H1>.*Fruit!.*</H1>"] [[http://]www.mysite.com/%%A[*.html]]') DO (
    echo ^<%%A> > <output.txt>
)

)

【问题讨论】:

  • 你能给我们展示一个输入的实际例子和你想要达到的实际结果吗?
  • 到目前为止您尝试了哪些方法以及遇到了什么问题?为了让您入门,请使用此提示...查看FORFINDSTR 命令并尝试此FOR /f "tokens=1,2 delims=:" %%a in ('FINDSTR /R /I /S "&lt;H1&gt;.*&lt;/H1&gt;" *.htm') do ECHO ^&lt;a href="%%a"^&gt;%%b^&lt;/a^&gt;
  • 谢谢@PA,但我仍然对你的意思有些困惑。如果我有任何问题,我会尝试并回复您。
  • 我对其进行了编辑以显示我现在所处的位置......但我仍然无法运行它......
  • 您的第二个for 是否缺少/f

标签: batch-file


【解决方案1】:

您的方法存在几个问题。首先,FINDSTR 在远程 URL 中找不到。所以你需要下载它们。

从以下代码开始,它使用CURL 进行下载,让您开始。

@echo off
FOR /F %%A in (input.txt) DO (
  curl --output temp.html http:www.mysite.com/%%A 
  FOR /F "tokens=1,2 delims=:" %%B in ('FINDSTR /I /R "<H1>.*Fruit.*</H1>" temp.html') DO (
    ECHO %%A
  )
)

编辑:

cURL 不是 Windows 命令,它是一个外部实用程序。 http://en.wikipedia.org/wiki/CURL 。您需要安装它。还有另一个众所周知的网络下载工具,GNU Wget http://en.wikipedia.org/wiki/Wget。有关更多选项,请参阅 Superuser.com 上的此问题 https://superuser.com/questions/299754/wget-curl-alternative-native-to-windows

【讨论】:

  • 当我试图解决它时,我不断收到以下错误:curl is not recognized as an external or internal command
  • 没关系,我没有做足够的背景调查,真的很抱歉。
  • 非常感谢你的帮助,你真的让我摆脱了束缚,我学到了一个很棒的新实用程序,用于处理我不知道的批处理文件!谢谢!
猜你喜欢
  • 2022-11-03
  • 2013-02-17
  • 2014-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多