批量删除文件名中的字符而不更改扩展名

维基

以下批处理代码从文件名中删除了字符“ x”,但也删除了扩展名“ .docx”中的“ x”。如何防止代码重命名扩展名?

for /f "delims=" %%a in ('dir /b /a-d *x*.docx') do (
    set "fname=%%~a"
    setlocal enabledelayedexpansion
    set "nname=!fname:x=!"
    ren "!fname!" "!nname!"
    endlocal
)
格哈德

从拆分使用扩展名%%~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 /?

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从扩展名前的文件名中删除日期

删除文件名中的非数字字符,java 中的扩展名除外

从文件名中删除某些字符串模式,而不影响扩展名

文件名中的字符串-如何删除扩展名?

从具有多个扩展名的文件名中删除某些扩展名

批量更改文件扩展名

如何批量输出不带扩展名的文件名?

从文件名字符串中删除文件扩展名

如何在更改文件名时“不”更改文件扩展名?

如何从Python中文件名列表中的文件名中删除扩展名?

如何更改我上载的文件名而不更改扩展名

在Windows中从文件名中批量删除特殊字符

在Linux中批量删除文件名中的特殊字符

如何删除文件名中没有给定字符串的某些扩展名文件?

从URL获取文件名并删除文件扩展名

Python 根据扩展名更改文件名

更改所有包含特定字符串的文件名的扩展名

如果目录中没有其他扩展名的文件名,请删除文件

通过在文件扩展名之前删除特定字符来批量重命名文件?

批量重命名文件名以删除最后一个“-”后的部分,忽略扩展名

如何从参数中的文件名中删除.bat扩展名?

文件名中的批量替换字符

查找以扩展名或无扩展名的特定字符结尾的文件名

批量删除确切的文件扩展名

从文件名中删除特定(已知)扩展名(如果存在)

如何在Shell脚本中删除文件名的扩展名?

Powershell一次更改批量文件扩展名

在Python中从文件名提取扩展名

在Python中获取不带扩展名的文件名