我有一个问题,无论我把它包裹起来,我都无法解决。我包含了我的最新代码,这些代码没有给我预期的结果和解决方案的代码,但是一次只能处理一个文件。然而,我无法知道如何自动循环遍历每个文件。
简而言之,我有一个包含许多CSV
文件的目录CSV
文件中的某些条目具有负值( - )我需要在所有实例中删除此减号。
现在,如果我使用以下内容(在单个文件中)
$content = Get-Content "L:\Controls\BCR\0001cash.csv" | ForEach {$_ -replace $variable, ""} | Set-Content "L:\controls\bcr\0001temp.csv"
我要做的是自动遍历数千个这些对象,而不必单独引用它们。
我开始时:
$Directory = "L:\Controls\BCR\"
$variable = "-"
$suffix = ".tmp"
定义目录,减去我要删除的符号以及我想要更改为的文件的后缀......
$Files = Get-ChildItem $Directory | Where-Object {$_.Extension -like "*csv*"} | Where-Object {$_.Name -like "*cash*"}
获取我希望使用的每个文件
然后我正在使用
ForEach ($File in $Files) { Get-Content $Files | ForEach {$_ -replace $variable, ""} | Set-Content {$_.Basename + $Variable}
然而结果却一无所获......
不知所措?任何人???
$Directory = "L:\Controls\BCR\"
$variable = "-"
$suffix = ".tmp"
$Files = Get-ChildItem $Directory | Where-Object {$_.Extension -like "*csv*"} | Where-Object {$_.Name -like "*cash*"}
$process = ForEach ($File in $Files) { Get-Content $Files | ForEach {$_ -replace $variable, ""} | Set-Content {$_.BaseName + $suffix}
}
答案 0 :(得分:1)
您在Get-Content
cmdlet($Files
而不是$File
)中使用错误变量。您也可以简化脚本:
$Directory = "L:\Controls\BCR\"
$variable = "-"
$suffix = ".tmp"
Get-ChildItem $Directory -Filter '*cash*csv' |
ForEach-Object {
(Get-Content $_ -Raw) -replace $variable |
Set-Content {$_.BaseName + $suffix}
}