У меня есть скрипт, который запускается, когда я указываю точный каталог c: \ script \ 19 \, проблема в том, есть другие папки в скрипте c: \, такие как 18, 17, 16. У меня есть скрипт, который добавляется 19 перед всеми файлами. Как мне получить это, чтобы посмотреть на дедушку файла, который он переименовывает, и добавить его? Пример того, как это работает, это файлы вроде этого:
c:\script\18\00000001\Plans.txt
c:\script\19\00001234\Plans.txt
c:\script\17\00005678\App.txt
Но мой скрипт переименовывает файлы, подобные этим
c:\script\18\00000001\19-0001 Plans.txt
c:\script\19\00001234\19-1234 Plans.txt
c:\script\17\00005678\19-5678 App.txt
Мой скрипт такой:
$filepath = Get-ChildItem "C:script\" -Recurse |
ForEach-Object {
$parent = $_.Parent
$grandparent = $_.fullname | Split-Path -Parent | Split-Path -Parent | Split-Path -Leaf
}
Get-ChildItem "C:\Script\" –recurse –file |
Where-Object {$_.Name –notmatch ‘[0-9][0-9]-[0-9]’} |
rename-item -NewName {$grandparent + '-' + $_.Directory.Name.SubString($_.Directory.Name.length -4, 4) + ' ' + $_.Name}