Windows 7 在windows 7下批量循环遍历文件内容
好的,我相信我不是唯一一个问过这个问题的人,但由于我对批处理文件命令语法的理解有限,我感到不知所措。在写下这个问题之前点击建议的答案,并没有让我到达我想要的地方 以下是我手头的情况: 每天,我都会收到一堆URL来启动,并检查在某段时间内是否有某个字符串显示在这些页面上(一些写得非常糟糕的web应用程序创建了这些页面的内容)。我收到的URL数量每天都有很大的变化。唯一的常量是URL的文件名 因此,我需要缓慢地循环浏览此文件中的URL,例如: (这是我想要做的Linux/Bash表示) 因此,在批处理下,我将有某种形式的foreach循环,并按如下方式启动我的命令: C:\Users\MyUSER\AppData\Local\Google\Chrome\Application\Chrome.exe%URL% 但是,在批处理模式下,如何构造for循环并将每一行分配给名为URL的变量呢 是的,我可以在Linux中完成全部工作,不需要任何批处理文件,但这将被分发给一个较低级别的支持人员,他们不了解运行任何Linux桌面,比如GNOME、KDE或其他。因此,它必须是一个批处理文件,并在win7平台上运行Windows 7 在windows 7下批量循环遍历文件内容,windows-7,batch-file,Windows 7,Batch File,好的,我相信我不是唯一一个问过这个问题的人,但由于我对批处理文件命令语法的理解有限,我感到不知所措。在写下这个问题之前点击建议的答案,并没有让我到达我想要的地方 以下是我手头的情况: 每天,我都会收到一堆URL来启动,并检查在某段时间内是否有某个字符串显示在这些页面上(一些写得非常糟糕的web应用程序创建了这些页面的内容)。我收到的URL数量每天都有很大的变化。唯一的常量是URL的文件名 因此,我需要缓慢地循环浏览此文件中的URL,例如: (这是我想要做的Linux/Bash表示) 因此,在批处
提前感谢不要为此使用批处理。PowerShell或VBScript等语言更适合此类任务 PowerShell:
$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
}
}
VBScript:
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
您的答案可能很优雅,但由于我很难理解更简单的批处理命令,当涉及到您的代码片段时,我完全不知道。如果不是,但当他们要求我改变我的代码,我想有一个战斗的机会。因此,我的心几乎定在批上。不过无论如何还是要谢谢你。另外,我从大家那里听说powershell命令会自动包含在win7命令提示符中。如何测试此声明的有效性?@Mel\u Burslan PowerShell包含在Win7中,但您不能直接在
CMD
中运行PowerShell cmdlet。您可以在CMD
中运行powershell.exe
,例如powershell-命令“Write Host'foo'-ForegroundColor red”
或powershell-文件C:\path\to\script.ps1
。至于批处理命令的简单性:这是因为它们非常简单,因此尝试使用它们执行高级操作变得非常复杂/笨拙。@Mel_Burslan对于批处理文件,此任务无论如何都需要VB脚本或WGET之类的工具来下载网页,然后搜索网页。添加模糊的时间框架要求会使问题更加复杂,因此执行此任务的批处理脚本可能非常复杂,并且还需要(免费)第三方程序或VBS。
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