1

好的,我确定我不是唯一一个以前问过这个问题的人,但是由于我对批处理文件命令语法的理解有限,我很茫然。在写这个问题之前点击建议的答案,并没有让我到达我想要的地方。

这是我手头的情况:

每天,我都会收到一堆 URL 来启动并检查某个字符串是否在特定时间段内显示在每个页面上(一些编写得很糟糕的 Web 应用程序会创建这些页面的内容) 我的 URL 数量给定的,每天变化很大。唯一不变的是 URL 进入的文件名。

所以,我需要慢慢地遍历这个文件中的 URL,例如:

(这是我想做的 Linux/Bash 表示)

for URL in `cat URLlistFILE.txt`
do
  /usr/bin/chrome $URL
  sleep 30
  touch semaphore file 
# an AHK script checks for the existence of semaphore file on the windows side
# when it is present, it does a screen scraping and search for the string
# then remotely deletes the semaphore file and reports the findings.
  sleep 30
done

所以,在批处理过程中,我将有某种 foreach 循环并像这样启动我的命令:

C:\Users\MyUSER\AppData\Local\Google\Chrome\Application\chrome.exe %URL%

但是我将如何构造for循环并将每一行分配给批处理模式下名为URL的变量

是的,我可以在 Linux 中完成所有事情,而不需要任何批处理文件,但这将分发给不了解运行任何 Linux 桌面(如 GNOME、KDE ​​或其他)的较低级别的支持人员。所以它必须是一个批处理文件并在win7平台上运行。

提前致谢

4

1 回答 1

0

不要为此使用批处理。PowerShell 或 VBScript 等语言更适合此类任务。

电源外壳:

$urllist    = "C:\path\to\urllist.txt"
$teststring = "..."

Get-Content $urllist | % {
  $content = (Invoke-WebRequest $_).RawContent
  if ( $content -match $teststring ) {
    Write-Host "$_`tOK" -ForegroundColor green
  } else {
    Write-Host "$_`tNOK" -ForegroundColor red
  }
}

VB脚本:

Set fso = CreateObject("Scripting.FileSystemObject")

urllist    = "C:\path\to\urllist.txt"
teststring = "..."

For Each url In Split(fso.OpenTextFile(urllist).ReadAll, vbNewLine)
  Set req = CreateObject("Msxml2.XMLHttp.6.0")
  req.open "GET", url, False
  req.send

  If req.status = 200 Then
    If InStr(req.responseText, teststring) Then
      WScript.Echo url & vbTab & "OK"
    Else
      WScript.Echo url & vbTab & "Not OK"
    End If
  End If
Next
于 2013-07-14T10:47:06.147 回答