Get-ChildItem零结果输出

时间:2016-11-07 09:22:36

标签: powershell for-loop get-childitem

我有一个问题,无论我把它包裹起来,我都无法解决。我包含了我的最新代码,这些代码没有给我预期的结果和解决方案的代码,但是一次只能处理一个文件。然而,我无法知道如何自动循环遍历每个文件。

简而言之,我有一个包含许多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}



}

1 个答案:

答案 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}
    }