Изменение имени файла с учетом расширения
Есть файлы, где название выглядит так: "Название..pdf". Как найти и переименовать все файлы, название которых заканчивается на точку? Пробовал через поиск в Проводнике Windows искать "*." тип: .pdf. Если в поиске вбить ".." то захватывает лишние файлы (те, у которых корректное название).
Ответы (2 шт):
Нужно использовать, то что умеет регулярные выражения, например 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
В Проводнике такие поиски осуществлять бесполезно. Вот пример командного файла, с помощью которого можно найти все файлы, содержащие ".." в имени файла в текущем каталоге, включая подкаталоги. Переименование и какое-то иное усложнение поиска оставляю Вам.
@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