2

get-children私はこれを使用してrename組み合わせて行う方法を探していましたifが、運がありませんでした。

ディレクトリ (test) のすべてのサブディレクトリ (subdir1、subdir2 など) でファイルを検索したい"trigger.txt"のですが、ファイルがこれらのサブディレクトリのいずれかに存在する場合、同じサブディレクトリ内の別のファイルの名前を変更したい ( changeme.txtto _changeme.txt)

言い換え:

ファイルsubdir1\"trigger.txt"が存在するsubdir1\"changename.txt"場合は、subdir1\"_changename.txt"

ファイルが存在する場合はファイルの名前を変更し、ファイルを検索するスクリプトを見つけましたが、それらを接続できません...助けはありますか?

4

2 に答える 2

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}
于 2013-10-29T22:18:54.863 に答える
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
    }
}
于 2013-10-29T22:18:46.547 に答える