Как переименовать файлы в папках, заменив начало имени файла на родительское имя - PullRequest
1 голос
/ 26 сентября 2019

У меня почти 2000 папок, названных в честь различных названий продуктов, таких как G00114.Файлы в этих папках должны иметь префикс с именем продукта, но некоторые из них были названы неправильно, как, например, 00114_300_f_resized_65.jpg.

Поэтому мне нужно заменить все символы перед _ на имя родительской папки.

Это то, что, как мне кажется, мне нужно, но я не знаю, есть ли какая-либо такая команда, которая позволит мне заменить «символы перед _» и правильно ли написан код

get-childitem -recurse *jpg |
  foreach {
    rename-item $_ $_.Name.Replace("characters before the "_"", ".Directory.Name")
  }

Заранее спасибо:)

Ответы [ 2 ]

0 голосов
/ 26 сентября 2019
gci 'c:\temp\*.jpg' -Recurse |  %{ Rename-Item $_ -NewName ($_.Name -replace $_.Name.split('_')[0], $_.Directory.Name ) -Verbose}
0 голосов
/ 26 сентября 2019

Вы можете сделать это с заменой регулярного выражения:

$_.Name -replace '.*(?=_)', $_.Directory.Name

Или, если вы хотите заменить символы только до первого _:

$_.Name -replace '.*?(?=_)', $_.Directory.Name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...