将子文件夹文件合并为一个文件(不包括当前文件夹文件)
Combine subfolder files into one file (excluding current folder files)
我想将子文件夹中所有文件的内容合并到一个文件中。但是,我想从该搜索中排除根文件夹。
我非常接近以下命令:
Get-ChildItem -include *.sql -rec | ForEach-Object {gc $_; ""} | out-file final.sql
问题在于,由于 foreach 是递归的,它还会找出输出文件 (final.sql),这会造成无限循环。这个 powershell 命令永远不会结束,final.sql 文件会随着时间变得越来越大。
如何从搜索中排除当前目录?
重要提示:我不想明确提及路径,因为不同的用户会有不同的文件系统。
试试这个:
$mainPath = 'C:\files\test'
$directories = Get-ChildItem -Path $mainPath -Directory
$destFile = $mainPath + '\final.sql'
Remove-Item -Path $destFile -ErrorAction SilentlyContinue | Out-Null
foreach( $directory in $directories ) {
Get-ChildItem -Path $directory.FullName -include *.sql -rec | ForEach-Object {gc $_; ""} | Out-File $destFile -Append
}
用户f6a4回答正确,但如果不想使用全限定目录名,最好使用这个版本:
$directories = Get-ChildItem -Path $mainPath -Directory
Remove-Item -Path final.sql -ErrorAction SilentlyContinue | Out-Null
foreach( $directory in $directories ) {
Get-ChildItem -Path $directory.FullName -include *.sql -rec | ForEach-Object {gc $_; ""} | Out-File final.sql -Append
}
您可以通过创建以下 .ps1 文件,使用 powershell 运行 此文件:
PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& './GlobalVersionPowershellBatch.ps1'"
我想将子文件夹中所有文件的内容合并到一个文件中。但是,我想从该搜索中排除根文件夹。
我非常接近以下命令:
Get-ChildItem -include *.sql -rec | ForEach-Object {gc $_; ""} | out-file final.sql
问题在于,由于 foreach 是递归的,它还会找出输出文件 (final.sql),这会造成无限循环。这个 powershell 命令永远不会结束,final.sql 文件会随着时间变得越来越大。
如何从搜索中排除当前目录?
重要提示:我不想明确提及路径,因为不同的用户会有不同的文件系统。
试试这个:
$mainPath = 'C:\files\test'
$directories = Get-ChildItem -Path $mainPath -Directory
$destFile = $mainPath + '\final.sql'
Remove-Item -Path $destFile -ErrorAction SilentlyContinue | Out-Null
foreach( $directory in $directories ) {
Get-ChildItem -Path $directory.FullName -include *.sql -rec | ForEach-Object {gc $_; ""} | Out-File $destFile -Append
}
用户f6a4回答正确,但如果不想使用全限定目录名,最好使用这个版本:
$directories = Get-ChildItem -Path $mainPath -Directory
Remove-Item -Path final.sql -ErrorAction SilentlyContinue | Out-Null
foreach( $directory in $directories ) {
Get-ChildItem -Path $directory.FullName -include *.sql -rec | ForEach-Object {gc $_; ""} | Out-File final.sql -Append
}
您可以通过创建以下 .ps1 文件,使用 powershell 运行 此文件:
PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& './GlobalVersionPowershellBatch.ps1'"