Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 重命名PowerShell中的多个文件夹_String_Variables_Powershell_Rename - Fatal编程技术网

String 重命名PowerShell中的多个文件夹

String 重命名PowerShell中的多个文件夹,string,variables,powershell,rename,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 = “Rena

我有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*”, “”}

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

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

实际上,这应该也可以,而且要短得多(不需要附加文件扩展名,因为对文件名执行重命名)


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

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

实际上,这应该也可以,而且要短得多(不需要附加文件扩展名,因为对文件名执行重命名)

资料来源:


来源:

-verbose
添加到
重命名项中
,以获取更改内容的列表。或使用
-WhatIf
列出将要更改的内容(但不更改任何内容)。将
-verbose
添加到
重命名项中,以获得更改内容的列表。或者一个
-WhatIf
来列出将要更改的内容(但不更改任何内容)。你只是在黑暗中盲目地拍摄。你为什么不先读一些Powershell的基础知识,然后再开始呢?@manojilds,至少他在尝试?许多人在这里发帖,根本没有任何事先的努力…@x0n-那些人被否决和关闭等…只是说,因为他是在浪费时间做随机的事情和一些基本的介绍会节省很多时间。如果OP没有尝试过任何东西,你也不会费心去评论这些问题。你只是在黑暗中盲目地射击。你为什么不先读一些Powershell的基础知识,然后再开始呢?@manojilds,至少他在尝试?许多人在这里发帖,根本没有任何事先的努力…@x0n-那些人被否决和关闭等…只是说,因为他是在浪费时间做随机的事情和一些基本的介绍会节省很多时间。如果OP没有尝试过任何东西,他也不会费心去评论这些问题。
get-childItem ABC_* | rename-item -newname { $_.name -replace 'ABC_','' }