我在单个父文件夹中有50个子文件夹。
在每个子文件夹中都有多个.txt文件。我想将单个子文件夹中的所有文本文件合并为1个.txt文件。
但我想要一个命令,以便可以一次性完成所有子文件夹,就像我不想为每个子文件夹编写命令一样。
例如: -
ABCD(父文件夹): - 一个 B;这里A和B是子文件夹
A \ 0001.txt A \ 0002.txt
我想合并并制作一个文本文件A \ 0001.txt。
乙\ 0001.txt 乙\ 0002.txt
我想合并B文件夹中的两个文本文件。
可以一次完成吗?
答案 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
}
}