使用 PowerShell 合并多个文本文件并生成一个新的单个文本文件?
Combine multiple text files and produce a new single text file using PowerShell?
我在一个目录中有多个文本文件。如何将所有文件合并为一个并生成一个新的单个文本文件保存在桌面上?
$directory = "C:\tmp"
$resultFile = $env:USERPROFILE + "\Desktop\result.txt"
Get-ChildItem -Path $directory -Include *.txt -Recurse | Get-Content | Out-File -FilePath $resultFile -NoClobber
不要将结果放在与文本文件相同的目录中,否则会得到不好的结果:)
这是一个解决方案,它会生成一个组合文件,其中用一个空行分隔每个文件的内容。如果您愿意,可以在 foreach-object 循环的“”中包含任何您想要的字符。
Get-ChildItem d:\scripts -include *.txt -rec | ForEach-Object {gc $_; ""} | out-file d:\scripts\test.txt
并且 FTR 无需担心将您正在创建的文件放在您正在扫描的同一目录中。它是在 Get-ChildItem cmdlet 在管道中具有 运行 之后创建的,因此不会产生问题(尽管如果您不删除它,其内容将包含在脚本的后续 运行 中) .
试试这个:
$yourdir = "c:\temp\"
Get-ChildItem $yourdir -File -Filter *.txt | gc | out-file -FilePath ([Environment]::GetFolderPath("Desktop") + "\totalresult.txt")
如果您想为 header 添加文件名,您可以这样做:
$yourdir="c:\temp\"
$destfile= ([Environment]::GetFolderPath("Desktop") + "\totalresult.txt")
Get-ChildItem $yourdir -File -Filter *.txt | %{"________________________" |out-file $destfile -Append; $_.Name | Out-File $destfile -Append; gc $_.FullName | Out-File $destfile -Append}
我在一个目录中有多个文本文件。如何将所有文件合并为一个并生成一个新的单个文本文件保存在桌面上?
$directory = "C:\tmp"
$resultFile = $env:USERPROFILE + "\Desktop\result.txt"
Get-ChildItem -Path $directory -Include *.txt -Recurse | Get-Content | Out-File -FilePath $resultFile -NoClobber
不要将结果放在与文本文件相同的目录中,否则会得到不好的结果:)
这是一个解决方案,它会生成一个组合文件,其中用一个空行分隔每个文件的内容。如果您愿意,可以在 foreach-object 循环的“”中包含任何您想要的字符。
Get-ChildItem d:\scripts -include *.txt -rec | ForEach-Object {gc $_; ""} | out-file d:\scripts\test.txt
并且 FTR 无需担心将您正在创建的文件放在您正在扫描的同一目录中。它是在 Get-ChildItem cmdlet 在管道中具有 运行 之后创建的,因此不会产生问题(尽管如果您不删除它,其内容将包含在脚本的后续 运行 中) .
试试这个:
$yourdir = "c:\temp\"
Get-ChildItem $yourdir -File -Filter *.txt | gc | out-file -FilePath ([Environment]::GetFolderPath("Desktop") + "\totalresult.txt")
如果您想为 header 添加文件名,您可以这样做:
$yourdir="c:\temp\"
$destfile= ([Environment]::GetFolderPath("Desktop") + "\totalresult.txt")
Get-ChildItem $yourdir -File -Filter *.txt | %{"________________________" |out-file $destfile -Append; $_.Name | Out-File $destfile -Append; gc $_.FullName | Out-File $destfile -Append}