Удалить одинаковую вставку из всех файлов в директории
Из-за ошибок с синхронизацией 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
}
Как выполнить:
- В меню "Пуск" набираем "powershell" и выбираем из списка windows powershell или windows powershell ise. Второй на мой взгляд более удобен
ИлиWIN+Rв появившемся окне вводимpowershellилиpowershell_ise - Редактируем параметры команды на необходимые, указываем часть имени для переименования, путь
- Копируем отредактированную команду в терминал powershell