如何用PowerShell递归将文件夹内容输出到独立TXT文件?
实现方案
需求匹配版本(仅处理根目录下的直接子文件夹)
以下命令会遍历指定根目录下的所有直接子文件夹,将每个文件夹内的文件按LastWriteTime排序后,写入与文件夹同名的TXT文件(文件生成在根目录下):
# 定义根目录路径 $rootDir = 'C:\Users\hmd\Desktop\PSTest' # 遍历根目录下的直接子文件夹 Get-ChildItem -Path $rootDir -Directory | ForEach-Object { # 拼接输出文件路径:根目录\文件夹名.txt $outputFile = Join-Path -Path $rootDir -ChildPath "$($_.Name).txt" # 获取当前文件夹内的文件→按最后修改时间排序→提取文件名→写入TXT Get-ChildItem -Path $_.FullName -File | Sort-Object LastWriteTime | Select-Object -ExpandProperty Name | Out-File -FilePath $outputFile }
递归处理所有层级子文件夹版本
如果需要处理所有深度的子文件夹(比如Proj1下还有子文件夹时,也为其生成对应TXT),可以添加-Recurse参数,同时将TXT文件生成在对应子文件夹的同级目录:
$rootDir = 'C:\Users\hmd\Desktop\PSTest' # 递归遍历所有层级的子文件夹 Get-ChildItem -Path $rootDir -Directory -Recurse | ForEach-Object { # 输出文件路径:子文件夹的父目录\文件夹名.txt $outputFile = Join-Path -Path $_.Parent.FullName -ChildPath "$($_.Name).txt" Get-ChildItem -Path $_.FullName -File | Sort-Object LastWriteTime | Select-Object -ExpandProperty Name | Out-File -FilePath $outputFile }
关键说明
-Directory参数:仅筛选文件夹,避免处理文件Sort-Object LastWriteTime:按文件最后修改时间排序(默认升序,如需降序可加-Descending)Select-Object -ExpandProperty Name:只提取文件名,排除其他文件属性Out-File:替代重定向符>,更稳定地处理编码和输出格式
内容的提问来源于stack exchange,提问作者Stangn99
相关产品推荐
相关产品推荐

