如果文件名已存在,请替换文件名的一部分

时间:2019-08-16 04:20:01

标签: powershell

在此问题中,如果新重命名的文件名已经存在,如何重命名文件名的一部分?希望新尝试的文件名覆盖现有文件。还希望重命名文件夹内文件夹中的文件夹。

用文件名中的“ 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

1 个答案:

答案 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