使用PowerShell批量重命名电脑各用户Roaming目录下的指定文件
PowerShell批量重命名多用户AppData下指定文件问题排查
原命令错误原因
- 遍历对象逻辑颠倒:原命令先尝试获取尚未存在的目标命名文件
$rename的列表,若该路径下没有对应文件,整个循环完全不会执行,你应该先遍历需要被重命名的原文件列表。 - 通配符使用不符合PowerShell语法规则:
Rename-Item的-Path参数不支持直接传入带多段通配符的路径批量匹配多个位置的文件,必须先通过Get-ChildItem检索到所有符合条件的原文件对象,再逐个处理。 -NewName参数使用错误:该参数仅需要传入新的文件名(无需完整路径),原代码传入整个文件对象$_会导致路径拼接错误,重命名失败。
正确可运行命令
# 定义原文件名 $oldFileName = "test.txt" # 定义重命名后的新文件名 $newFileName = "test-old.txt" # 检索所有用户目录下符合条件的原文件 Get-ChildItem -Path "C:\Users\*\AppData\Roaming\SAP\Common\$oldFileName" -File | ForEach-Object { Rename-Item -Path $_.FullName -NewName $newFileName -Force }
注意事项
运行该命令需要获取管理员权限,否则部分受系统权限限制的用户配置目录无法正常读取,会出现遗漏处理的情况。
内容的提问来源于stack exchange,提问作者RIC
相关产品推荐
相关产品推荐

