我有一个完整的文本文件,在文本文档的每一行中,电视节目的名称末尾都有一个ID。我想忽略任何空行或忽略任何错误
Get-Content -Path "C:\test\text.txt" | ForEach-Object {
$_.Substring($_.Length - 5) -ErrorAction 'SilentlyContinue'
}我试图抑制任何类似的错误,但这并没有解决问题。如何在foreach循环中跳过空行或禁止显示错误消息?
发布于 2017-05-23 18:51:54
您可以在编写代码之前全局更改error操作变量,然后将其设置回以前的值:
$PrevErrorActionPreference = $ErrorActionPreference
$ErrorActionPreference = 'silentlycontinue'
Get-Content -Path "C:\test\text.txt" | ForEach-Object {
$_.Substring($_.Length - 5)
}
$ErrorActionPreference = $PrevErrorActionPreference或者,在使用SubString之前,只需使用If语句测试字符串的长度
Get-Content -Path "*.txt" | ForEach-Object {
If ($_.Length -ge 5) { $_.Substring($_.Length - 5) }
}第三种选择是使用Try..Catch块:
Get-Content -Path "*.txt" | ForEach-Object {
Try {
$_.Substring($_.Length - 5)
} Catch {
# Do nothing
}
}https://stackoverflow.com/questions/44132521
复制相似问题