-ne 到 $null 将不起作用



>我正在使用具有 13 个递增列"access1、access2,.."的 CSV 在 PowerShell 中工作,我正在尝试从访问列不为空的每一行中逐步导出"crednum",每列都有一个新的 CSV。我已经尝试过(-ne $null(和(-ne " "(都只会给我crednum专栏的全部内容,我不知道我做错了什么。

$a = 1
do {
$column = ("access" + $a)
$outpath = "C:Test" 
$access = Import-Csv 'C:import.csv' |
where {$_.$column -ne " "} |
select crednum
$a
$access | Export-Csv ($outpath + $column + ".csv") -NoTypeInformation
$a++
} while ($a -le 13)

空字符串不等于$null,也不等于单个空格" "。 它等于""''[String]::Empty。 但是,通常最好将[String]::IsEmptyOrWhitespace()函数用于此类操作,因为它涵盖了更多极端情况,例如当列null、单个空格或空字符串时。

您还将在每个循环中导入整个 CSV。 这是浪费精力,因为每次迭代都必须处理整个文件。

尝试这样的事情:

$Columns = 1..12 | ForEach-Object { "access$_" }
$Access = Import-Csv 'C:import.csv'
foreach ($Column in $Columns) {
$Access |
Where-Object { -not [String]::IsNullOrWhiteSpace($_.$Column) } |
Select-Object -Property crednum |
Export-Csv -LiteralPath ($outpath + $Column + ".csv") -NoTypeInformation
}

相关内容

  • 没有找到相关文章

最新更新