如何用powershell替换多个文件

时间:2018-05-15 02:02:12

标签: powershell replace

目标是在文本文件中用空格替换“,,”。 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 :(得分:1)

您必须检索文件列表,然后遍历列表。

您可以使用Get-ChildItem检索与模式匹配的文件(尽管在这种情况下Get-Item也适用):

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

这会给你一个FileInfo的数组。您可以使用foreach迭代一个集合。

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

$file.FullName将是文件的完整路径。

您对单个文件的现有工作解决方案应该很容易适应。

答案 1 :(得分:0)

$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
}

答案 2 :(得分:0)

试试这个:

Get-ChildItem "c:\temp\F18*.txt" | %{$file=$_.FullName; (Get-Content $file).Replace(',,', ',') | Out-File $file }