在此问题中,如果新重命名的文件名已经存在,如何重命名文件名的一部分?希望新尝试的文件名覆盖现有文件。还希望重命名文件夹内文件夹中的文件夹。
用文件名中的“ VOD”替换“默认”,
Replace Part of File Name Powershell
from pathlib import Path
for path in map(Path, paths):
if path.exists():
content = path.read_text()
break
else:
raise CriticalException("Could not read the file!")
此处的解决方案不适用于Get-ChildItem Default_*.csv |
Rename-Item -NewName {$_.Name -replace '^Default','VOD'}
ls *.csv | Rename-Item -NewName {$_.Name -replace "Default","VOD"}
:
-Force
答案 0 :(得分:0)
根据以下问题和答案:rename-item and override if filename exists
使用Move-Item
和-Destination
,并将$_.Name
交换为$_.FullName
(如果不这样做,它将把所有内容都放入当前目录,因为{{ 1}}只是文件名,而不是完整路径。以防万一,请使用Name
检查要执行的操作
使用-WhatIf
:
-WhatIf
输出:
如果发生以下情况,怎么办:在目标“项目:C:\ temp \ pstest \ Default_77.txt目标:C:\ temp \ pstest \ VOD_77.txt”上执行“移动文件”操作。
现在有Get-ChildItem *.* -File -Recurse |
Move-Item -Destination {$_.FullName -replace 'Default','VOD'} -WhatIf
:
当您对使用-Force
参数的输出感到满意时,请将其更改为-WhatIf
以完成文件移动。
-Force