我一直在寻找使用get-children
和rename
结合if
但没有运气的方法。
我想搜索文件"trigger.txt"
的目录(test)的所有子目录(subdir1,subdir2等),如果文件存在于其中一个子目录中,我想更改另一个文件的名称相同的子目录(changeme.txt
到_changeme.txt
)
改写:
如果文件subdir1\"trigger.txt"
存在,请将subdir1\"changename.txt"
更改为subdir1\"_changename.txt"
我找到了脚本来更改文件的名称(如果存在)并查找文件但是我无法将它们连接在一起......有什么帮助吗?
答案 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
}
}