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

batch-file for replacing dots with spaces in file names

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

802.11.Wireless.LAN.Fundamentals.Cisco.Press.eBook-kB.pdf

802 11 Wireless LAN Fundamentals Cisco Press eBook-kB.pdf

请注意,不应删除扩展名的最后一个点(此处位于 PDF 之前),因此我无法使用 this script 来完成此任务。

未测试:

@echo off

set "root_dir=c:\pdfs"

setlocal enableDelayedExpansion
for /r "%root_dir%" %%a in (*.pdf) do (
 set "fnm=%%~na"
 set "nfnm=!fnm:.= !"
 rem remove echo if everything looks ok
 echo ren "%%a" "%%~dpa!nfnm!%%~xz"

)

如果回显命令正常,您需要更改 root_dir 并删除最后一行的 echo。掩码放在*.pdf

@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"
        )
    )

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

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

重命名操作仅回显到控制台。如果输出正确,删除 ren

之前的 echo 命令

我的 JREN.BAT hybrid JScript/batch utility 可以直接从命令行非常简单地处理这个问题。它是纯脚本,可​​以在 XP 以后的任何 Windows 机器上本地运行。它使用正则表达式替换来重命名文件或文件夹。

jren "\.(?=.*\.)" " " /s /p "c:\yourRootPathHere"

该命令扫描所有文件名,替换名称中至少有一个附加句点的所有句点。

因为 JREN 是批处理脚本,如果将命令放在另一个批处理脚本中,则必须使用 call jren

使用 jren /? 获取有关所有可用选项的帮助 - 这是一个强大的实用程序:-)