在PowerShell中重命名许多文件夹

1 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_”)
Run Code Online (Sandbox Code Playgroud)

第三次尝试

Rename-Item -{$_.name -like “*ASD*”, “”}
Run Code Online (Sandbox Code Playgroud)

Sha*_*evy 6

试试这个,获取所有子项(仅限文件),删除abc_替换它们(什么都没有)并重命名每个文件.要重命名子目录中的文件,请将-Recurse开关添加到Get-ChildItem命令:

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

UPDATE

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

Get-ChildItem c:\example -Filter ABC_* | Where-Object {!$_.PSIsContainer} | Rename-Item -NewName { $_.Name -replace '^ABC_' }
Run Code Online (Sandbox Code Playgroud)

  • 将`-verbose`添加到`rename-item`以获取更改内容的列表.或者`-WhatIf`列出要改变的内容(但不改变任何内容). (2认同)