使用 Windows cmd/Powershell 将目录和子目录中的所有文件内容保存到单个文件中

Save all files content from a directory and sub directory into a single file with Windows cmd/Powershell

所以,我有一个包含子文件夹的文件夹,其中包含不同类型的文件 (php,js,html)。我想知道 windows powershell/cmd 上是否有命令将我目录的所有文件内容保存到一个文件中。简而言之,我想在 windows 上做一个递归的 cat > save.txt。 提前谢谢你

来自命令提示符

您可以使用带有 + 字符的复制命令来连接多个文件:

copy file1.txt + file2.txt save.txt.

要连接目录中的所有文件,请结合使用 for 命令和 dir /b(/b 表示裸格式,仅文件名)

for /f %f in ('dir *.* /b') do @type %f>>save.txt

或递归地,对目录和所有子目录使用 /s 并结合 /a:-d 以排除输出中的目录。

for /f %f in ('dir *.* /b /s /a:-d') do @type %f>>save.txt

使用 PowerShell:

连接文件列表:

Get-Content .\file1.txt,.\file2.txt | Out-File Save.txt

连接目录中的所有文件:

(Get-ChildItem -File | ForEach-Object { Get-Content $_ } ) | out-file save.txt

递归连接所有文件:

(Get-ChildItem -File -Recurse | ForEach-Object { Get-Content $_.FullName } ) | out-file save.txt

注意:对于二进制文件,您可能需要将 /b 开关添加到 copy 命令,或者如果使用 PowerShell,则将 -Raw 添加到 Get-Content

使用 Get-ChildItem 递归地发现文件夹层次结构中的任何文件,然后将这些文件通过管道传输到 Get-Content(用于读取),最后将这些调用的输出通过管道传输到 Set-Content(用于将整个东西写回磁盘)。

Get-ChildItem path\to\root\folder -Recurse -File |Get-Content |Set-Content path\to\save.txt

注意:与cat不同,Get-Content默认将文件读取为text/strings,因此这适用于text-encoded个文件(如js,php 和 html 源文件),但不适用于二进制文件