Удалить одинаковую вставку из всех файлов в директории

Из-за ошибок с синхронизацией OneDrive множество файлов в моих директориях теперь имеют определенную вставку. То есть если раньше файл назывался:

index.js

То теперь он называется:

index-DESKTOP-9T6I5F5.js

Как я могу рекурсивно пробежать по всем папкам и файлам в директории и удалить эту вставку?


Ответы (1 шт):

Автор решения: PotroNik
#Часть имени, которую хотим удалить
$cutN = '-DESKTOP-9T6I5F5'
#Рекурсивный поиск и передача файлов подходящих по маске в цикл ForEach-Object
#Нужно указать диск и каталог от которого производить поиск
Get-ChildItem "C:\" -Filter "*$cutN*" -Recurse | %{
#Текущее имя файла записываем в переменную
    $oldName = $_.FullName
#Записываем переменную, удаляя часть имени
    $newName = $_.Name.Replace("$cutN",'')
#Переименовываем файл
    Rename-Item -Path $oldname -NewName $newname
#Выводим в терминал данные о текущей итерации
    echo "Rename $oldName -> $newName"
}

UPD: Более компактный вид:

$cutN = '-DESKTOP-9T6I5F5'
Get-ChildItem "H:\Старый ПК\Хлам" -Filter "*$cutN*" -Recurse | % {
    Rename-Item -Path ($_.FullName) -NewName ($_.Name.Replace("$cutN",'')) -Verbose
}

Как выполнить:

  1. В меню "Пуск" набираем "powershell" и выбираем из списка windows powershell или windows powershell ise. Второй на мой взгляд более удобен
    Или WIN+R в появившемся окне вводим powershell или powershell_ise
  2. Редактируем параметры команды на необходимые, указываем часть имени для переименования, путь
  3. Копируем отредактированную команду в терминал powershell
→ Ссылка