2

В Windows XP я пытаюсь выяснить, как пакетное переименование и удалить последние символы имен файлов.

Пример удаления последних 4 символов перед расширением файла: file.doc.pdf -> file.pdf

Я мог бы сделать:

ren *.pdf *.
ren *.doc *.pdf

Хотя это не сработает, если в папке уже есть другие PDF-файлы.

Не уверен, нужна ли здесь команда FOR.

4 ответа4

2

Если имена ваших файлов не содержат периодов, отличных от конца (.doc.pdf), будет работать следующее:

for /f "delims=." %a in ('dir /b *.doc.pdf') do ren "%~a.doc.pdf" "%~a.pdf"
1

ren * *. -> will give you 'file.doc' repeat above command -> will give you 'file' ren * *.pdf -> will give 'file.pdf'

0
ren *.doc.pdf ????????????????????.pdf

Просто убедитесь, что целевая маска имеет как минимум столько же ? как самое длинное базовое имя файла.

Объяснение, почему это работает, см. В разделе Как команда Windows RENAME интерпретирует подстановочные знаки?

-1

file.doc.pdf -> file.doc:

for %I in (*.doc.pdf) do rename "%~nI.pdf" "%~nI"

file.doc -> file.pdf

for %I in (*.doc) do rename "%~nI.doc" "%~nI.pdf"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .