我正在尝试使用Rename-Item
cmdlet执行以下操作:
我的文件夹包含“ * .txt ”文件。我们说1.txt,2.txt等...
我想复制具有一些前缀的文件,将它们重命名为* .txt并覆盖任何现有文件(如果有的话)。
示例:
文件夹:c:\ TEST
文件:1.txt,2.txt,3.txt,4.txt,5.txt,index.1.txt,index.2.txt,index.3.txt,index.4.txt,index .5.txt
我想使用rename-item过滤任何 index.*.txt
并将其重命名为 *.txt
,如果存在相同的文件,请替换它
谢谢你们
答案 0 :(得分:28)
如@lytledw所述,Move-Item -Force
非常适合重命名和覆盖文件。
要替换名称的index.
部分,您可以使用-replace
正则表达式运算符:
Get-ChildItem index.*.txt |ForEach-Object {
$NewName = $_.Name -replace "^(index\.)(.*)",'$2'
$Destination = Join-Path -Path $_.Directory.FullName -ChildPath $NewName
Move-Item -Path $_.FullName -Destination $Destination -Force
}
答案 1 :(得分:5)
我尝试了rename-item -force,但它没有用。但是,我能够做move-item -force并且工作正常