У меня есть проблема, которую я не могу решить, независимо от того, как я ее оборачиваю. Я включаю свой последний код, который не дает желаемого результата, и код для решения, которое работает, но только для одного файла за раз. Однако я не могу понять, как автоматически перебирать каждый из файлов.
Короче говоря, у меня есть каталог со многими файлами 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}
}
Set-Content
записывает содержимое в файл.Rename-Item
переименовал бы его. - person sodawillow   schedule 07.11.2016