如何替换目录中每个文件的内容?

时间:2015-12-19 10:24:52

标签: powershell

有一个函数(Please wait while I install dependencies You are using pip version 6.0.2, however version 7.1.2 is available. You should consider upgrading via the 'pip install --upgrade pip' command. 100% |################################| 167kB 145kB/s 100% |################################| 159kB 218kB/s 100% |################################| 237kB 472kB/s 100% |################################| 172kB 240kB/s 100% |################################| 196kB 302kB/s 100% |################################| 147kB 296kB/s 100% |################################| 159kB 279kB/s 100% |################################| 200kB 321kB/s 100% |################################| 159kB 315kB/s 100% |################################| 217kB 130kB/s 100% |################################| 4.6MB 196kB/s 100% |################################| 94kB 805kB/s 100% |################################| 110kB 753kB/s Command "python setup.py egg_info" failed with error code 1 in /var/folders/n9/t1wyb5y171df9032_fykvr8h0000gn/T/pip-build-akpiholr/MySQL-python )用目录中的每个文件替换所有“1”和“2”。新内容将写入文件Function($_)

输入:in.txt→111

输出:in.txt→222→out.txt

请告诉我,如何在每个文件中进行替换?

out.txt

1 个答案:

答案 0 :(得分:1)

Get-Content "C:\Dir\*"会一次性为您提供C:\Dir中所有内容的内容,因此您无法单独修改每个文件。您还会在C:\Dir中的任何目录中收到错误。

您需要遍历目录中的每个文件并单独处理它们:

Get-ChildItem 'C:\Dir' -File | ForEach-Object {
  $file = $_.FullName
  (Get-Content $file) -replace '1','2' | Set-Content $file
}

Get-Content周围的括号确保在进一步处理之前再次读取和关闭文件,否则写入(仍然打开)文件将失败。

请注意,参数-File仅在PowerShell v3或更高版本中受支持。在旧版本中,您需要使用以下内容替换Get-ChildItem -File

Get-ChildItem 'C:\Dir' | Where-Object { -not $_.PSIsContainer } | ...