Powershell Move-Item Rename If File Exists

余生颓废 提交于 2019-11-27 22:47:35

问题


I have a powershell script that takes all of the files in one directory, renames the first one and moves it, and then goes to the next file. Sometimes there will be multiple files that get renamed to the same name (because of the system that it's going to, not ideal and will have to change) and was overwriting files that shouldn't have been getting overwritten with -force. I need all of the files to move but also have unique names so we have them available in the destination location. Is there an easy way to have it automatically rename so it would look like:

123.txt 123(1).txt 123(2).txt

or

123.txt 123_1.txt 123_2.txt


回答1:


There's no built-in way to do that. Give this a try:

$src = "d:\temp"
$dest = "d:\temp1"
$num=1

Get-ChildItem -Path $src -Filter *.txt -Recurse | ForEach-Object {

    $nextName = Join-Path -Path $dest -ChildPath $_.name

    while(Test-Path -Path $nextName)
    {
       $nextName = Join-Path $dest ($_.BaseName + "_$num" + $_.Extension)    
       $num+=1   
    }

    $_ | Move-Item -Destination $nextName
}


来源:https://stackoverflow.com/questions/16839787/powershell-move-item-rename-if-file-exists

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!