1

わかりました、以前にこの質問をしたのは私だけではないと確信していますが、バッチファイルのコマンド構文についての理解が限られているため、途方に暮れています. この質問を書く前に提案された回答をクリックしても、目的の場所に移動できませんでした。

ここに私の状況があります:

毎日、たくさんの URL を起動して、これらのページのそれぞれに特定の文字列が一定期間表示されているかどうかを確認します (非常によく書かれていない Web アプリケーションによって、これらのページのコンテンツが作成されます)。日によって大きく異なります。唯一の定数は、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 ですべてを実行でき、バッチ ファイルを作成する必要はありませんが、これは、GNOME、KDE ​​などのような Linux デスクトップの実行を理解していない下位レベルのサポートに渡されます。したがって、それはバッチ ファイルであり、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 に答える