Переименование файла, включая прадедушку, прародителя и прародителя, в имя файла, кроме папки «Вызовы» - PullRequest
0 голосов
/ 20 декабря 2018

Я искал подобное решение онлайн, но все еще не могу заставить это работать.Я хотел бы включить имя прапрадедушки, прародителя и родительской папки (игнорируя папку звонков) в имя файла pdf, см. Ниже:

Текущий путь:

C:\AttachedFiles\Test01\Calls\1848953\1\engineer_jobsheet.pdf
C:\AttachedFiles\Teoo233\Calls\185864\3\engineer_jobsheet.pdf

Хотел быпереименуйте файл PDF, как показано ниже (исключая папку звонков):

Test01_1848953_1_engineer_jobsheet.pdf
Teoo233_185864_3_engineer_jobsheet.pdf

Я начал с этого, который переименовывает файл PDF в 1_engineer_jobsheet.pdf.

Get-ChildItem C:\AttachedFiles\ -Filter engineer_jobsheet.pdf -Recurse | Rename-Item -NewName {$_.Directory.Name+'_'+$_.Name}

Может кто-нибудь указать мнев правильном направлении, как это сделать, исключая имя папки звонков (имейте в виду, что test01 / Teoo233 может каждый раз называться по-разному)

Надеюсь, это имеет смысл.

1 Ответ

0 голосов
/ 20 декабря 2018

Если все ваши пути имеют одинаковое количество папок, которые вы можете использовать -split.

Попробуйте разделить пути по символу "\" и объедините их, как вам угодно.Что-то вроде ниже ...

$directory = Get-ChildItem C:\AttachedFiles\ -Filter engineer_jobsheet.pdf -Recurse

Foreach($file -in $directory){
    $string = $file.fullname -split "\\" #splits path
    $newstring = $string[2]+"_"+$string[4]+"_"+$string[5]+"_"+$string[6] #recreates string
    Rename-Item $file.fullname -NewName $newstring
}

или

Get-ChildItem C:\AttachedFiles\ -Filter engineer_jobsheet.pdf -Recurse | %{
    [string]$path = $_.fullname
    $string = $path -split "\\" #splits path
    $newstring = $string[2]+"_"+$string[4]+"_"+$string[5]+"_"+$string[6] #recreates string
    Rename-Item $path -NewName $newstring
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...