Как сделать замену на несколько файлов с PowerShell - PullRequest
0 голосов
/ 15 мая 2018

Цель - заменить ",," на пустые в текстовых файлах.enter image description here

Нижеследующее работает с одним файлом:

$path = "C:\Users\ThompsonHo\Desktop\testing\F181RMR CAN.txt"
$word = ",,"
$replacement = ""
$text = get-content $path 
$newText = $text -replace $word,$replacement
$newText > $path

Я пытаюсь обработать несколько файлов, но не получается, Как заменить несколько файловс powershell?

$path = "C:\Users\ThompsonHo\Desktop\testing\F18*.txt"
$word = ",,"
$replacement = ""
$text = get-content $path 
$newText = $text -replace $word,$replacement
$newText > $path

Ответы [ 3 ]

0 голосов
/ 15 мая 2018
$p="C:\temp"
$cs=Get-ChildItem -Path $p 

foreach($c in $cs)
{
    $t=Get-Content -Path $c.FullName -Raw 
    #$t  -replace ",,",""|Out-File -FilePath  $c.FullName -NoNewline
    Set-Content -Path $c.FullName -Value ($t  -replace ",,","") -NoNewline
}
0 голосов
/ 15 мая 2018

попробуйте это:

Get-ChildItem "c:\temp\F18*.txt" | %{$file=$_.FullName; (Get-Content $file).Replace(',,', ',') | Out-File $file }
0 голосов
/ 15 мая 2018

Вы должны получить список файлов, а затем выполнить итерацию по списку.

Вы можете получить файлы, которые соответствуют шаблону с Get-ChildItem (хотя Get-Item также будет работать в этой ситуации):

$files = Get-ChildItem "C:\Users\ThompsonHo\Desktop\testing\F18*.txt"

Это дает вам массив FileInfo.Вы можете перебрать коллекцию с помощью foreach.

foreach ($file in $files) {
    $file.FullName
}

$file.FullName, на этом этапе будет полный путь к файлу.

Существующее рабочее решение для одного файла должно легко адаптироваться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...