我试图读取网页上所有ZIP文件的列表,并将它们存储在文本文件中以便稍后下载。我无法使用任何第三方工具,因为这也需要在ARM系统和Windows 7上运行,因此只能内置命令。我使用批处理脚本,因为它在Windows中基本上是通用的。
我首先获取网站的HTML,我在这里获得了帮助:How can I find the source code for a website using only cmd?
这给了我RAW HTML,然后我用FINDSTR过滤
FINDSTR /I /C:.ZIP %~DP0FULLHTML.TXT>%~DP0ZIPLINES.TXT
下一步是解析该文件的实际文件名,但我遇到了困难,因为网页使用表格列出文件,导致多行长度超过19k字符。当我尝试使用FOR循环解析它时,它只是忽略这些行。我无法弄清楚如何缩短这条线或通过某些分隔线分成更短的线条,我甚至尝试制作下面的PS1文件,但我基本上都不了解PowerShell脚本并且似乎无法获得它工作。
[CmdletBinding()]
Param(
[Parameter(Mandatory=$True,Position=1)]
[string]$file,
[Parameter(Mandatory=$True,Position=2)]
[string]$newfile
)
$contents = Get-Content $file
foreach ($line in $contents)
{
$splititems = $line.split("/")
foreach ($line in $splititems)
{
$line | Out-File $newfile
}
}
然后我尝试在批处理文件中运行:
Powershell -ExecutionPolicy Bypass -File "%~DP0SPLIT.PS1" "%~DP0ZIPLINES.TXT" "%~DP0SPLITLINES.TXT"
这给了我一个错误,说我最后错过了一个}。
我知道在这个网站上搜索了一下,CMD的变量限制为8196个字符,这些行超过了,因此失败了...而且我确定我只是完全搞砸了PS代码。
在我可以将这些大线分成较小的一行之后,我已经有了一些混乱的代码,可以将文件名转换为单个TXT文件。不知道PS中只有一个简单的步骤就是抓住所有.ZIP文件名并将它们推送到文件中。
答案 0 :(得分:0)
Aacini的评论引导我找到一系列链接,最终将我带到了这个链接:http://www.dostips.com/forum/viewtopic.php?f=3&t=6044
这是一个名为JREPL的批处理脚本。我能够运行以下一系列命令,只留下TXT文件只包含ZIP文件的链接:
CALL %~DP0JREPL.BAT "=" "\r\n" /X /L /F %~DP0FULLHTML.TXT /I /O %~DP0SPLITLINES.TXT
CALL %~DP0JREPL.BAT ">" "\r\n" /X /L /F %~DP0SPLITLINES.TXT /I /O -
FINDSTR /I /C:.ZIP %~DP0SPLITLINES.TXT>%~DP0ZIPFILES.TXT