我希望有人可以帮我完成这项工作,但我在网上遇到这种情况并没有好运。
我需要使用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:找不到与参数名称匹配的参数' Delimiter'。 在行:13 char:39 + if(Get-Content -path $ File -Delimiter<<<<"
0" | Select-String "[^
r]`n")
+ CategoryInfo:InvalidArgument:(:) [Get-Content],ParameterBindingException + FullyQualifiedErrorId:NamedParameterNotFound,Microsoft.PowerShell.Commands.GetContentCommandGet-Content:找不到与参数名称匹配的参数' Delimiter'。 在行:13 char:39 + if(Get-Content -path $ File -Delimiter<<<<"
0" | Select-String "[^
r]`n")
+ CategoryInfo:InvalidArgument:(:) [Get-Content],ParameterBindingException + FullyQualifiedErrorId:NamedParameterNotFound,Microsoft.PowerShell.Commands.GetContentCommandGet-Content:找不到与参数名称匹配的参数' Delimiter'。 在行:13 char:39 + if(Get-Content -path $ File -Delimiter<<<<"
0" | Select-String "[^
r]`n")
+ CategoryInfo:InvalidArgument:(:) [Get-Content],ParameterBindingException + FullyQualifiedErrorId:NamedParameterNotFound,Microsoft.PowerShell.Commands.GetContentCommand
答案 0 :(得分:0)
在您的脚本中,$ File是' PSCustomObject'而不是FileInfo对象,因此您需要使用其属性' fullname'像这样: Get-Content -path $ File.fullname -Delimiter"`0" 。这是因为$ FileNameArray中的对象是使用Select-Object创建的。
你可以通过省略" |来避免这种情况选择对象全名"在创建$ FileNameArray时。这样,$ FileNameArray包含FileInfo对象,Get-Content可以直接使用它们。这是首选方式。
所以这一行:
$FileNameArray = Get-ChildItem -Path $FileName | where {!$_.psicontainter }| Select-Object fullname
成为这一行:
$FileNameArray = Get-ChildItem -Path $FileName | where {!$_.psicontainter }