如何通过powershell从文件夹中的所有文本文件中删除一些单词?

如何通过powershell从文件夹中的所有文本文件中删除一些单词?,powershell,powershell-2.0,powershell-3.0,powershell-ise,Powershell,Powershell 2.0,Powershell 3.0,Powershell Ise,我有一种情况,我需要删除文件夹中所有文本文件中的一些单词。 我只知道如何在一个文件中这样做,但我需要为该文件夹中的所有文本文件自动这样做。我根本不知道如何在powershell中完成它。 文件名是随机的 请帮忙 这是密码 $txt=获取内容c:\work\test\01.i $txt[0]=$txt[0]-替换“-” $txt[$txt.length-1]=$txt[$txt.length-1]-替换“-” $txt |设置内容c:\work\test\01.i 基本上,it jsut从第一

我有一种情况,我需要删除文件夹中所有文本文件中的一些单词。 我只知道如何在一个文件中这样做,但我需要为该文件夹中的所有文本文件自动这样做。我根本不知道如何在powershell中完成它。 文件名是随机的

请帮忙

这是密码



$txt=获取内容c:\work\test\01.i

$txt[0]=$txt[0]-替换“-”

$txt[$txt.length-1]=$txt[$txt.length-1]-替换“-”

$txt |设置内容c:\work\test\01.i


基本上,it jsut从第一行和最后一行删除“-”,但我需要对文件夹中的所有文件执行此操作

像这样的

ls c:\temp\*.txt | %{ $newcontent=(gc $_) -replace "test","toto"  |sc $_ }

下面是一个完整的工作示例:

Get-ChildItem c:\yourdirectory -Filter *.txt | Foreach-Object{
(Get-Content $_.FullName) | 
Foreach-Object {$_ -replace "what you want to replace", "what to replace it with"} | 
Set-Content $_.FullName
}
现在,请快速解释:

  • 使用筛选器获取ChildItem:获取以.txt结尾的所有项
  • 第一个ForEach对象:将执行花括号内的命令
  • Get Content$\.FullName:获取.txt文件的名称
  • 第二个ForEach对象:将执行文件中文本的替换
  • Set Content$\.FullName:将原始文件替换为包含更改的新文件
重要提示:-replace使用正则表达式,因此如果文本字符串有任何特殊字符

$files = get-item c:\temp\*.txt
foreach ($file in $files){(Get-Content $file) | ForEach-Object {$_ -replace 'ur word','new word'}  | Out-File $file}

我希望这会有所帮助。

使用
Get Childitem
筛选要修改的文件。Per“Powershell与Windows一样,使用文件扩展名来确定文件类型

此外: 如果改为使用此选项,则将使用示例中显示的内容,将第一行和最后一行中的所有“-”替换为“”:

 $txt[0] = $txt[0] -replace '-', ''
 $txt[$txt.length - 1 ] = $txt[$txt.length - 1 ] -replace '-', ''

如何仅从第一行和最后一行删除“-”?$txt=获取内容c:\work\test\01.i$txt[0]=$txt[0]-替换“-”$txt[$txt.length-1]=$txt[$txt.length-1]-替换“-”$txt |设置在您创建的重复问题中发布的内容c:\work\test\01.iI(重复的问题是不好的)。
 $txt[0] = $txt[0] -replace '-', ''
 $txt[$txt.length - 1 ] = $txt[$txt.length - 1 ] -replace '-', ''