【问题标题】:Powershell script for going into texts files within a directory and replacing characters用于进入目录中的文本文件并替换字符的 Powershell 脚本
【发布时间】:2015-04-12 22:01:10
【问题描述】:

早上好,

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

'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 行原始文本。

如果这是有道理的,有没有人对此有任何指示?

【问题讨论】:

    标签: powershell text replace find powershell-2.0


    【解决方案1】:

    其他一些例子,应该做同样的伎俩:)

    $fileName = Get-ChildItem "C:\users\x\desktop\info\*.txt" -Recurse
    
    $filename | %{
        (gc $_) -replace "BS","\" -replace "FS","/" -replace "CO",":" |Set-Content $_.fullname
    }
    

    【讨论】:

      【解决方案2】:

      这应该可以解决问题:

      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 以获取每个文件的内容,然后替换您想要替换的内容。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-09-10
        • 2022-07-12
        • 2021-07-03
        • 2017-10-19
        • 1970-01-01
        • 1970-01-01
        • 2021-01-12
        • 2020-04-23
        相关资源
        最近更新 更多