首页 > 解决方案 > Powershell复制文件信息

问题描述

我正在编写一个自动化脚本,它将备份 XML 文件,解析内容以删除某个单词并替换为另一个,将完成的文件复制到不同的目录。我已经让它适用于单个文件,但如果有多个文件,它会获取文件夹中所有文件的内容并将其应用于所有文件。因此,例如,我有 4 个 5kb XML 得到处理,但在输出端我最终得到 4 个 20kb 文件。任何帮助都是极好的!

    Write-Log -Line "Files backed up. Editing..."
   (Get-Content -path '***\*.xml' -Raw) -Replace "DELETED", "DELISTED" | Set-Content -path 'c:\import\failed\*.xml'  
    Write-Log -Line "$QuarCount files edited. Reprocessing quarantine files..."
    Get-ChildItem -path 'c:\import\failed\*.xml' | rename-item -NewName {$_.name -replace ".xml","repro.xml"}
    move-item -path C:\Import\failed\*.xml -destination C:\Import\```

标签: powershell

解决方案


Get-Content -path '***\*.xml'立即为您提供当前路径及其子目录中所有 xml 文件的内容。

您想要一个一个地遍历文件:

Get-ChildItem -path '*.xml' -recurse | 
ForEach-Object { 
     $f = $_
    (Get-Content -path $f.FullName -Raw) -Replace "DELETED", "DELISTED" | 
    Set-Content -path "c:\import\failed\$($f.Name).xml"
}

推荐阅读