Разделите имя из расширения, используя %%~na
и %%~xa
, затем выполните замену только имени, а затем просто объедините новое имя с расширением.
Вам также не нужен dir cmd. если ваши файлы находятся в корне D:\test
, запустите:
@echo off
setlocal enabledelayedexpansion
for %%a in ("D:\test\*x*.docx" ) do (
set "fname=%%~a"
set "xonly=%%~xa"
set "nonly=%%~dpna"
set "nonly=!nonly:x=!"
ren "!fname!" "!nonly!!xonly!"
)
Если ваши файлы находятся в подкаталогах внутри D:\test
, выполните рекурсивный поиск:
@echo off
setlocal enabledelayedexpansion
for "D:\Test" /R %%a in (*x*.docx) do (
set "fname=%%~a"
set "xonly=%%~xa"
set "nonly=%%~dpna"
set "nonly=!nonly:x=!"
ren "!fname!" "!nonly!!xonly!"
)
Обратите внимание, что %%~a
будет диском и файлом, поэтому мы должны установить !nonly!
в качестве диска, пути и имени, другими словами %%~dpna
Для получения дополнительной информации о подстановке переменных откройте cmd.exe
и выполните for /?