用于进入目录中的文本文件并替换字符的 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
}
大家早上好,
我正在尝试了解如何进入一个目录中的多个文本文件,并将字符替换为以下内容:
'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
}