用于进入目录中的文本文件并替换字符的 Powershell 脚本

Powershell script for going into texts files within a directory and replacing characters

大家早上好,

我正在尝试了解如何进入一个目录中的多个文本文件,并将字符替换为以下内容:

'BS' = '\'

'FS' = '/'

'CO' = ':'

到目前为止我设法做到的是:

(get-content C:\users\x\desktop\info\*.txt) | foreach-object {$_ -replace "bs", "\"} | set-content C:\Users\x\desktop\info\*.txt 

我有 6 个文本文件,里面都有一行文本,上面的脚本将这行文本复制到所有文本文件中。所以我最终得到的是 6 个文本文件,每个文件有 6 行文本,我需要 6 个文本文件和 1 行原始文本。

如果这有道理,有人对此有任何指示吗?

这应该可以解决问题:

Get-ChildItem C:\users\x\desktop\info\*.txt | ForEach-Object {(Get-Content $_.PSPath) | Foreach-Object {$_ -replace "bs", "\"  -replace "fs", "/"  -replace "co", ":"} | Set-Content $_.PSPath}

您的文件未按预期运行的原因是,您实际上是在使用 get-content 从所有文件中取出所有内容。这充当所有文件中所有文本的字符串连接。

您首先必须获取文件列表,然后将其通过管道传输到 foreach 以获取每个文件的内容,然后替换您想要替换的内容。

其他一些例子,应该做同样的事情:)

$fileName = Get-ChildItem "C:\users\x\desktop\info\*.txt" -Recurse

$filename | %{
    (gc $_) -replace "BS","\" -replace "FS","/" -replace "CO",":" |Set-Content $_.fullname
}