Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PowerShell合并多个文本文件并生成新的单个文本文件?_Powershell_Powershell 2.0_Powershell 3.0_Powershell 4.0 - Fatal编程技术网

使用PowerShell合并多个文本文件并生成新的单个文本文件?

使用PowerShell合并多个文本文件并生成新的单个文本文件?,powershell,powershell-2.0,powershell-3.0,powershell-4.0,Powershell,Powershell 2.0,Powershell 3.0,Powershell 4.0,我在一个目录中有多个文本文件。如何将所有文件合并为一个文件,并生成一个保存在桌面上的新文本文件 $directory = "C:\tmp" $resultFile = $env:USERPROFILE + "\Desktop\result.txt" Get-ChildItem -Path $directory -Include *.txt -Recurse | Get-Content | Out-File -FilePath $resultFile -NoClobber 不要将结果与文本文

我在一个目录中有多个文本文件。如何将所有文件合并为一个文件,并生成一个保存在桌面上的新文本文件

$directory = "C:\tmp"

$resultFile = $env:USERPROFILE + "\Desktop\result.txt"

Get-ChildItem -Path $directory -Include *.txt -Recurse | Get-Content | Out-File -FilePath $resultFile -NoClobber

不要将结果与文本文件放在同一目录中,否则会得到不好的结果:)

这里有一个解决方案,它将生成一个组合文件,并用一个空行分隔每个文件的内容。如果愿意,可以在foreach对象循环的“”中包含所需的任何字符

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")
如果要为标头添加文件名,可以执行以下操作:

$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}

使用powershell有几种不同的方法可以做到这一点,但如果您能让我们知道您已经尝试了什么以及遇到了什么问题,我们会很有帮助,然后我们可以帮助您解决这些问题,并解释将来如何处理类似问题,不仅仅是为您编写代码。dir C:\folder*-include*.txt-rec | gc | out文件C:\result.txt..@mikegarucio所有文本文件都位于目录中的dfs路径中。。我希望将所有这些结合起来,并将结果保存在我的desktop@MikeGaruccio此外,每个新文本文件之间的seperator将很好。您粘贴的代码看起来正确,并在我的计算机上成功运行以合并文本文件。就我个人而言,我会用实际的cmdlet get-childitem替换别名dir,但这是一种风格。当您尝试运行它时,是否收到任何特定的错误消息?一旦我们解决了基本脚本的问题,我们可以考虑添加一个分隔符。每个新文本文件合并的分隔符如何?hanks这可以包括子目录还是仅包括主目录?任何方式都可以包括来自主目录和子目录的所有内容,代码使用
-recurse
开关,以便从中收集文本文件目录及其下的所有子目录,如果您删除
-recurse
,它将仅从目录的第一级收集文本文件。大帮助Mike。。谢谢最后一个问题。。即使我们直接指定目录,它也不会影响任何东西,而不是Get ChildItem。这个命令输出是一个无限循环,输出文件越来越大。我唯一更改的是txt到sql。@LuisGouveia请确保不要将输出文件放在同一目录中。如果我的文本文件名是a.txt b.txt c.txt d.txt,在合并e.txt中的所有文件时,我可以得到一个动态分隔符,即文本文件名本身。。例:a.文本-内容b.文本-内容c.文本-内容。对于每个分隔符,我都想知道文本文件本身的名称,希望你能理解我的疑问,谢谢你的帮助:)你能按向上箭头键吗;)谢谢你的反馈!声誉低于15的人所投的票将被记录,但不会改变公开投票的结果。。。。完成