【问题标题】:Powershell - Append file name, find & replace, output to directoryPowershell - 附加文件名,查找和替换,输出到目录
【发布时间】:2018-06-02 08:09:09
【问题描述】:

我有一些自动化任务,我希望每天执行一个 txt 文件目录。这包括:

1.将文件名追加到txt文件的第一行

2.用分号替换制表符分隔的内容(查找和替换)

3.将文件保存到子目录

以下代码可以进行查找和替换,但我无法将输出保存到其他目录,而是覆盖了原始文件。是否有不同的命令可以让我将输出保存到不同的目录?

(Get-Content "C:\Input\*.txt") -replace "`t", ";" | Set-Content "C:\Input\*.txt"

我目前有一个执行第 1 项(附加文件名)的 BAT,但如果可以将其包装到 Powershell 脚本中,我认为这将是一种更简洁的处理方式。任何帮助表示赞赏!

【问题讨论】:

  • 你试过out-file来保存你的txt文件吗?

标签: powershell filenames find-replace


【解决方案1】:

对 Vivek 的答案稍作修改,似乎可行。

Get-ChildItem "C:\Input\*.txt" | where {$_.Name -match ".txt"} | % {((Get-Content $_) -replace "`t", ";") | Set-Content "C:\Input\Upload\$($_.Name)"}

【讨论】:

    【解决方案2】:

    未测试,但你可以试试这个 -

    Get-ChildItem "C:\Input\" | where {$_.Name -match ".txt"} | % {((Get-Content $_) -replace "`t", ";") | Set-Content "DifferentDirectoryPath\$($_.Name)"}
    

    如果您的Input 文件夹有您想要迭代的子文件夹,那么您可以使用它 -

    Get-ChildItem "C:\Input\" -Recurse -Include "*.txt" | % {((Get-Content $_) -replace "`t", ";") | Set-Content "DifferentDirectoryPath\$($_.Name)"}
    

    【讨论】:

    • 感谢 Vivek,您的第一个建议出错了,但我在 Get-ChildItem 命令中添加了 *.txt,这似乎解决了问题。工作版本发布在下面的答案中。
    猜你喜欢
    • 2012-03-12
    • 2016-10-27
    • 2016-06-07
    • 1970-01-01
    • 1970-01-01
    • 2015-10-07
    • 1970-01-01
    • 2012-02-13
    相关资源
    最近更新 更多