【发布时间】:2015-10-23 20:04:31
【问题描述】:
我希望有人能给我完成这项工作所需的动力,但我在网上遇到这种确切情况时运气不佳。
我需要使用 PowerShell(不幸的是,我不能使用 Python 或 .NET 来解析文件列表,以确定它们是否包含 /r 而不是 /r/n 的行终止符。当传递单个文件时,此脚本以前处于生产和工作状态。
我正在进行调整,以便可以容纳多个文件。
我正在获取文件名列表并将它们放入一个数组中(这是有效的),但是当我通过 if 语句循环文件时,我得到了这个错误。
这是我的代码:
param(
#[Parameter(Mandatory=$True)]
[String]$FileName = "C:\LineTermTest\*C*.txt"
)
$FileNameArray = Get-ChildItem -Path $FileName | where {!$_.psicontainter }| Select-Object fullname
for ($i=0; $i -le $FileNameArray.Length -1; $i++ )
{
$File = $FileNameArray[$i]
if (Get-Content -path $File -Delimiter "`0" | Select-String "[^`r]`n" )
{
$content = Get-Content $File
$content | Set-Content $File -Replace "`n", "'r'n" -Encoding ASCII
[gc]::collect()
[gc]::WaitForPendingFinalizers()
}
}
这是我得到的错误
Get-Content:找不到与参数名称“分隔符”匹配的参数。 在行:13 字符:39 + if (Get-Content -path $File -Delimiter 0" | Select-String "[^r]`n" )
+ CategoryInfo : InvalidArgument: (:) [Get-Content], ParameterBindingException + FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.GetContentCommandGet-Content:找不到与参数名称“分隔符”匹配的参数。 在行:13 字符:39 + if (Get-Content -path $File -Delimiter 0" | Select-String "[^r]`n" )
+ CategoryInfo : InvalidArgument: (:) [Get-Content], ParameterBindingException + FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.GetContentCommandGet-Content:找不到与参数名称“分隔符”匹配的参数。 在行:13 字符:39 + if (Get-Content -path $File -Delimiter 0" | Select-String "[^r]`n" )
+ CategoryInfo : InvalidArgument: (:) [Get-Content], ParameterBindingException + FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.GetContentCommand
【问题讨论】:
-
有什么原因你不只是使用
dos2unix吗?
标签: powershell