合并父文件夹中不同文件夹中的文本文件

时间:2016-03-15 15:48:27

标签: cmd

我在单个父文件夹中有50个子文件夹。

在每个子文件夹中都有多个.txt文件。我想将单个子文件夹中的所有文本文件合并为1个.txt文件。

但我想要一个命令,以便可以一次性完成所有子文件夹,就像我不想为每个子文件夹编写命令一样。

例如: -

ABCD(父文件夹): - 一个 B;这里A和B是子文件夹

A \ 0001.txt A \ 0002.txt

我想合并并制作一个文本文件A \ 0001.txt。

乙\ 0001.txt 乙\ 0002.txt

我想合并B文件夹中的两个文本文件。

可以一次完成吗?

2 个答案:

答案 0 :(得分:0)

使用PowerShell可能会容易得多。

尝试以下操作并将basedir更改为所有子目录的父文件夹。

$basedir = "C:\Basedir"
$folderlist = Get-childitem -Path $basedir
foreach ($folder in $folderlist)
{
$dir = $folder
$outFile = Join-Path $dir "merged.txt"
# Build the file list
$fileList = Get-ChildItem -Path $dir -Filter File*.txt -File
# Get the header info from the first file
Get-Content $fileList[0] | select -First 2 | Out-File -FilePath $outfile -Encoding ascii
# Cycle through and get the data (sans header) from all the files in the list
foreach ($file in $filelist)
{
Get-Content $file | select -Skip 2 | Out-File -FilePath $outfile -Encoding ascii -Append
}
}

答案 1 :(得分:0)

也许古老但有用:此版本可递归处理文件夹和子文件夹:

$basedir = "..."
$folderlist = Get-childitem -Path $basedir -Recurse -Directory | Select-Object FullName

foreach ($folder in $folderlist)
{
    Write-Host $folder.FullName
    $dir = $folder.FullName
    $outFile = Join-Path $basedir "merged.txt"
    # Build the file list
    $fileList = Get-ChildItem -Path $dir -Filter *.log | Select-Object FullName

    # Get the header info from the first file
    #Get-Content $fileList[0] | select -First 2 | Out-File -FilePath $outfile -Encoding ascii
    # Cycle through and get the data (sans header) from all the files in the list
    foreach ($file in $filelist)
    {
        Write-Host $file.FullName
        Get-Content $file.FullName | Out-File -FilePath $outfile -Encoding ascii -Append
    }
}