如果Powershell中存在另一个文件,则重命名文件

时间:2013-10-29 22:05:17

标签: powershell

我一直在寻找使用get-childrenrename结合if但没有运气的方法。

我想搜索文件"trigger.txt"的目录(test)的所有子目录(subdir1,subdir2等),如果文件存在于其中一个子目录中,我想更改另一个文件的名称相同的子目录(changeme.txt_changeme.txt

改写:

如果文件subdir1\"trigger.txt"存在,请将subdir1\"changename.txt"更改为subdir1\"_changename.txt"

我找到了脚本来更改文件的名称(如果存在)并查找文件但是我无法将它们连接在一起......有什么帮助吗?

2 个答案:

答案 0 :(得分:2)

试试这个:

Get-ChildItem -r trigger.txt | Foreach {Rename-Item (Join-Path $_.DirectoryName changeme.txt)  _changeme.txt}

如果你想要简洁的版本:

ls -r trigger.txt | %{rni (join-path $_.DirectoryName changeme.txt) _changeme.txt}

答案 1 :(得分:0)

也许是这样的?

ls -filter trigger.txt -recurse | %{
    $original = Join-Path $(Split-Path $_.FullName -Parent) "ChangeMe.txt"
    $newName  = Join-Path $(Split-Path $_.FullName -Parent) "_ChangeMe.txt"

    if ([IO.File]::Exists($original)) {
        Write-Host "Renaming $($original)..."
        ren -Path $original -NewName $newName
    }
}