我正在尝试阅读网页上所有ZIP文件的列表,并将它们存储在文本文件中以供稍后下载。我不能使用任何第三方工具,因为这也需要在ARM系统和Windows 7上运行,因此只能在命令中构建。我使用批处理脚本,因为它在Windows中基本上是通用的。如何通过批量分割文本文件中极长的一行?
我通过获取网站,我得到了帮助,这里的HTML开始:How can I find the source code for a website using only cmd?
这给了我原始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文件名并将它们放入文件中。
“*不知道是否有在PS一个简单的步骤,只是抓住所有的.ZIP文件名并将它们放在一个文件中。*“ - 非常,是的 - 'iwr https://www.faa.gov/air_traffic/flight_info/aeronav/digital_products/vfr/ | %链接|? OuterHTML -match'TIFF'| %href | sc zips.txt' – TessellatingHeckler
我试图将其复制并粘贴到PowerShell中,但是我得到以下内容:术语'iwr'不被识别为cmdlet,函数,脚本文件或可操作程序的名称。 –
做了一点搜索,看起来像我不能做Invoke-WebRequest,因为它不存在,直到PowerShell 3.0,Windows 7有PowerShell 2.0。 –