自动从文本文件中删除特定字符并使用PowerShell保存到新位置

时间:2016-04-21 12:37:04

标签: powershell

我正在寻找一些帮助,基本上我试图用PowerShell执行3个动作(如果一切皆有可能)

  • 自动在保存到特定文件夹的文件上运行以下内容
  • 从该文件中删除字符
  • 将文件保存到新位置

我首先将代码放在一起以删除字符并且它起作用(在PowerShell ISE中显示删除了字符的文本,但在输出文件时它是空的。

创建新文件后,如果它可以移动到另一个文件夹并删除以前的文件,那就太棒了。

这是我到目前为止所拥有的。

Get-Content C:\Users\Tech\Desktop\Test\import.txt

foreach ($line in (Get-Content C:\Users\Tech\Desktop\Test\import.txt)) 
{ $line -replace "\&", "" -replace "\£", "" -replace "\+", "" -replace "\-",  "" -replace "\)","" -replace "\(","" -replace "\$","" -replace "\#","" -replace "\*","" -replace "\%",""} 
Out-File -Encoding UTF8 import.new.txt

1 个答案:

答案 0 :(得分:0)

您可以将替换内容直接换入Foreach Cmdlet,而无需使用Out-File语句即可替换一次匹配中的所有行。

$content = Get-Content "C:\Users\Tech\Desktop\Test\import.txt"
$newfile = "C:\YourNewLocation\import.new.txt"
$content -replace "\&", "" -replace "\£", "" -replace "\+", "" -replace "\-",  ""`
         -replace "\)","" -replace "\(","" -replace "\$","" -replace "\#","" `
         -replace "\*","" -replace "\%","" | Out-File -FilePath $newfile -Encoding UTF8 

上面的代码在新位置创建一个带有替换字符串的新文件,并保留原始文件。如果您在使用Remove-Item Cmdlet后要删除原始文件。

对于将文件保存到文件夹时自动运行,我会考虑运行脚本每运行X分钟运行Scheduled Task。以太或者您将需要一个不断运行的脚本来轮询该文件夹以进行更改。