在PowerShell中重命名许多文件夹

时间:2011-08-07 08:21:25

标签: string variables powershell rename

我有超过1000多个文件需要重命名。

第一个设置文件夹和/或文件按位置分组,因此每个文件的前四个字符相同;有四五个不同的位置。我需要删除文件夹名称的前几个字符。

示例:

  

旧文件:ABC_Doe,Jane
  新文件:Doe,Jane

有关最快捷方式的建议吗?

我尝试了以下所有方法:

  1st Attempt 
  $a = Get-ChildItem C:\example
  $b = Where-Object {$_.name -like “*ABC_*”}
  $cmdlet_name = “Rename-Item”
  $d = (cmdlet_name $a $b)
  invoke-expression $d

  2nd Attempt 
  $e = Get-ChildItem C:\example
  $f = $e.TrimStart (“ABC_”)

第三次尝试

Rename-Item -{$_.name -like “*ASD*”, “”}

2 个答案:

答案 0 :(得分:6)

尝试此操作,获取所有子项(仅限文件),通过替换它们(没有任何内容)删除abc_并重命名每个文件。要重命名子目录中的文件,请将-Recurse开关添加到Get-ChildItem命令:

Get-ChildItem c:\example -Filter ABC_* | Where-Object {!$_.PSIsContainer} | Rename-Item -NewName { ($_.BaseName -replace '^ABC_') + $_.Extension }

<强>更新

实际上,这应该也可以,并且更短(不需要附加文件扩展名,因为重命名是对文件名执行的。)

Get-ChildItem c:\example -Filter ABC_* | Where-Object {!$_.PSIsContainer} | Rename-Item -NewName { $_.Name -replace '^ABC_' }

答案 1 :(得分:0)

get-childItem ABC_* | rename-item -newname { $_.name -replace 'ABC_','' }

来源:get-help rename-item -full