如何使用PowerShell批量重命名多个文件夹并导出结果至TXT文件
PowerShell批量重命名指定文件夹+操作日志导出方案
核心实现脚本
直接修改脚本开头的路径和待处理文件夹名列表即可运行,脚本会自动判断文件夹是否存在、捕获重命名异常,同时把所有操作结果追加写入TXT日志文件:
# 配置项:修改为你的实际父文件夹路径 $rootPath = "D:\temp" # 配置项:在数组里添加/删除需要重命名的文件夹原名 $targetFolders = @("Test", "Folder", "Documents") # 日志文件保存路径 $logPath = Join-Path $rootPath "RenameResultLog.txt" foreach ($folderName in $targetFolders) { $sourcePath = Join-Path $rootPath $folderName $newFolderName = "Old-$folderName" if (Test-Path $sourcePath -PathType Container) { try { Rename-Item -Path $sourcePath -NewName $newFolderName -ErrorAction Stop $logMsg = "[$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')] 操作成功:$folderName -> $newFolderName" } catch { $logMsg = "[$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')] 操作失败:$folderName 重命名出错,错误信息:$($_.Exception.Message)" } } else { $logMsg = "[$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')] 操作跳过:$sourcePath 路径不存在,未执行重命名" } # 控制台同步输出结果+写入日志 Write-Host $logMsg $logMsg | Out-File -FilePath $logPath -Append -Encoding utf8 }
使用说明
- 你之前使用的单条
Rename-Item命令逻辑正确,批量处理的核心就是通过数组存储待操作对象,通过循环复用单条操作逻辑,同时通过Out-File把输出流写入文本文件实现日志留存。 - 脚本默认在控制台打印每一步操作结果,同时所有记录会追加保存到父路径下的
RenameResultLog.txt,采用UTF8编码避免中文乱码,每条记录带时间戳方便回溯。 - 首次运行建议先把
Rename-Item所在行注释掉,只保留日志输出逻辑,先预览所有待执行的操作是否符合预期,确认无误后再放开注释执行实际重命名,避免误操作。 - 如果需要给父路径下所有一级子文件夹统一添加
Old-前缀,不需要指定特定文件夹名,可以把循环部分替换为以下逻辑即可:
Get-ChildItem -Path $rootPath -Directory | ForEach-Object { $sourcePath = $_.FullName $newFolderName = "Old-$($_.Name)" try { Rename-Item -Path $sourcePath -NewName $newFolderName -ErrorAction Stop $logMsg = "[$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')] 操作成功:$($_.Name) -> $newFolderName" } catch { $logMsg = "[$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')] 操作失败:$($_.Name) 重命名出错,错误信息:$($_.Exception.Message)" } Write-Host $logMsg $logMsg | Out-File -FilePath $logPath -Append -Encoding utf8 }
- 所有逻辑基于PowerShell原生命令实现,不需要安装额外模块,PowerShell 5.1及以上版本均可直接运行。
内容的提问来源于stack exchange,提问作者Reddy
相关产品推荐
相关产品推荐

