批处理文件,用文件名中的空格替换点

liv*_*ing 0 batch-file

我有一些嵌套文件夹中的文件,其名称中有一些点,我想将它们转换为空格.例如转换

802.11.Wireless.LAN.Fundamentals.Cisco.Press.eBook-kB.pdf
Run Code Online (Sandbox Code Playgroud)

802 11 Wireless LAN Fundamentals Cisco Press eBook-kB.pdf
Run Code Online (Sandbox Code Playgroud)

请注意,不应删除扩展的最后一个点(此处为PDF之前),因此我无法使用此脚本执行此任务.

MC *_* ND 5

@echo off
    setlocal enableextensions disabledelayedexpansion

    set "root=c:\some\where"

    for /r "%root%" %%a in ("*.?*.pdf") do (
        set "filename=%%~na"
        setlocal enabledelayedexpansion 
        for %%f in ("!filename:.= !") do (
            endlocal  
            echo ren "%%~fa" "%%~f%%~xa"
        )
    )
Run Code Online (Sandbox Code Playgroud)

这将在指定的文件夹下递归搜索具有.pdf扩展名的文件,其中包括至少两个点.对于找到的每个文件,文件名中的附加点(不包括扩展名)将替换为空格.

为避免文件名或路径中的感叹号出现问题,在执行重命名操作之前,启用延迟扩展(修改块内的变量并访问更改的值所需)以删除点并禁用.

重命名操作仅响应控制台.如果输出正确,请删除echo之前的命令ren