gpt4 book ai didi

powershell - 忽略 ForEach-Object 循环中的错误

转载 作者:行者123 更新时间:2023-12-03 00:46:26 25 4
gpt4 key购买 nike

我有一个充满电视节目的文本文件,文本文档的每一行的名称末尾都有一个 ID。我想忽略任何空行或忽略任何错误

Get-Content -Path "C:\test\text.txt" | ForEach-Object  {
$_.Substring($_.Length - 5) -ErrorAction 'SilentlyContinue'
}

我尝试抑制任何此类错误,但这并没有解决问题。如何在 foreach 循环中跳过空行或抑制错误消息?

最佳答案

您可以在代码之前全局更改错误操作变量,然后将其设置回之前的值:

$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 block :

Get-Content -Path "*.txt" | ForEach-Object  {
Try {
$_.Substring($_.Length - 5)
} Catch {
# Do nothing
}
}

关于powershell - 忽略 ForEach-Object 循环中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44132521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com