我想在Powershell中创建一个简单的代码,该代码仅检查HTMl文件的文件夹中未使用哪些图像。因此,我想在本地打开每个HTML文件(而不是通过URI)并检索所有标签。听起来并不可怕。
我已经完成了研究,并且进展顺利,我想到了以下代码:
Foreach ($imageFile in $imageFiles){
Foreach ($file in $HTMLFiles)
{
Write-Debug "Processing: $file"
$html = New-Object -ComObject "HTMLFile"
$source = Get-Content -Path $file.FullName -Raw
$html.IHTMLDocument2_write($source);
$nbImages = $html.Images.length
ForEach ($i in $html.Images){
#$i.getTags("src")
}
}
}
问题1:我正在处理HTML文件,然后将它们(重新)转换为HTML文件以访问有用的方法。有没有简单的方法?
问题2和问题:我只是找不到浏览图像标签集合的方法。我怎么做?我检查了我的代码在源中如何找到图像,这是正确的。我只想从集合本身中获取信息。
谢谢您的帮助,我真的被困在这里!
PowerShell使您认为它具有等效的循环,但没有。foreach与|%{...}的作用不同。
在我的示例中,我必须用检索$ HTMLFiles并将其重定向到%{}的方式替换第二个foreach。这样,PS就会“知道” $ htmlFiles变量中的内容。
结论:比起foreach循环,更喜欢管道。管道使PS可以通过管道跟踪表达式的结果。Foreach循环似乎阻止它执行此操作。
结论2和更高的精度:最后,我找到了一种使用foreach做到这一点的方法。代替:
ForEach ($i in $html.Images){
...
}
做:
$images= @($html.Images)
$images | ForEach {...}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句