Изменение имени файла с учетом расширения

Есть файлы, где название выглядит так: "Название..pdf". Как найти и переименовать все файлы, название которых заканчивается на точку? Пробовал через поиск в Проводнике Windows искать "*." тип: .pdf. Если в поиске вбить ".." то захватывает лишние файлы (те, у которых корректное название).


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

Автор решения: Oopss

Нужно использовать, то что умеет регулярные выражения, например PowerShell, создать файл, например с именем renmyfile.ps1, в него вставить текст:

$files = Get-ChildItem -Filter '*..pdf'
foreach ($file in $files) {
    $newName = $file.Name -replace '\.\.pdf$', '.pdf'
    $newPath = Join-Path -Path $file.DirectoryName -ChildPath $newName
    Rename-Item -Path $file.FullName -NewName $newPath
}

поместить в текущую директорию, сделать резервную копию файлов, если что-то пойдет не так, и еще нужно разрешить выполнять скрипты powershell,для этого запустить powershell от администратора и запустить Set-ExecutionPolicy RemoteSigned
До

-a----        19.08.2024     11:38              0 Название. — копия (2).pdf
-a----        19.08.2024     11:38              0 Название. — копия (3)..pdf
-a----        19.08.2024     11:38              0 Название. — копия (4)..pdf
-a----        19.08.2024     11:38              0 Название. — копия.pdf
-a----        19.08.2024     11:38              0 Название..pdf

После

-a----        19.08.2024     11:38              0 Название. — копия (2).pdf
-a----        19.08.2024     11:38              0 Название. — копия (3).pdf
-a----        19.08.2024     11:38              0 Название. — копия (4).pdf
-a----        19.08.2024     11:38              0 Название. — копия.pdf
-a----        19.08.2024     11:38              0 Название.pdf
→ Ссылка
Автор решения: Fox Fox

В Проводнике такие поиски осуществлять бесполезно. Вот пример командного файла, с помощью которого можно найти все файлы, содержащие ".." в имени файла в текущем каталоге, включая подкаталоги. Переименование и какое-то иное усложнение поиска оставляю Вам.

@echo off
color 0A
chcp 1251 >nul
setlocal enabledelayedexpansion
cd /d %~dp0

for /r %%i in (*..*) do (
    if not exist "%%i\" echo %%i
)

echo.
pause
exit
→ Ссылка