从文本文件中删除特殊字符返回空白文件

Removing a Special Character from a Text file is returning Blank File

我有一个文本文件,我想从该文件中删除特殊字符。例如:Sample@ 在文件 Tess.txt

我想从文本文件中删除特殊字符并希望输出为:- 示例

我使用了下面的 powershell 脚本,但尽管替换了特殊字符,它还是从我的文件中删除了文本。

Powershell "Get-Content C:\Tess.txt | ForEach-Object { $_ -replace '@' } > C:\Tess.txt"

当我尝试将文件输出到 Tess1.txt 时,我看到了正确的输出样本。

Powershell "Get-Content C:\Tess.txt | ForEach-Object { $_ -replace '@' } > C:\Tess1.txt"

但我不想创建新的文本文件。我只想从现有文件中删除@。

我是 powershell 脚本的新手。请帮忙

如果不先将整个文件读入内存,则不能在管道中执行此操作:

(Get-Content C:\Tess.txt) | ForEach-Object { $_ -replace '@' } > C:\Tess.txt

这是因为 Get-Content 一次一行地读取文件,并将其传递到管道中,然后等待管道完成该行,然后再请求下一行。这意味着您正在尝试在完成阅读之前覆盖该文件。

Get-Content 表达式括在括号中将强制在启动管道之前读取所有文件内容,以便在您的脚本尝试覆盖文件时不再读取文件。