首页 > 解决方案 > 批量减少文件名中的空格

问题描述

使用批处理文件批量重命名这么多文件后,我发现命名结构如下所示:

文件名__###.jpg

FILENAME 和编号### 之间有两个空格(上面的两个下划线)。如何在 Windows 系统的命令提示符下使用批处理命令文件为具有上述命名结构的目录下的所有文件(可能具有不同的后缀)删除一个空格(或将 2 个空格减少到 1 个空格)。

非常感谢。

标签: windowsbatch-filecommand-promptfile-rename

解决方案


假设您没有任何以空格开头的文件名,那么

@echo off
for %%F in ("*  *") do for /f "tokens=1* eol= delims= " %%A in ("%%F") do ren "%%F" "%%A %%B"

以上将处理任意数量的连续空格的单次运行并将其转换为单个空格。

如果您有多个空格,那么您可以简单地解析出更多令牌。您不必担心解析比现有更多的标记,因为 Windows 会自动修剪文件名中的尾随空格和点。单个 可以处理多达 31 个空间运行(32 个令牌)FOR /F,并且处理 25 个空间运行(令牌 A 到 Z)很简单。下面的代码处理 9 次空间运行,这可能绰绰有余。

@echo off
for %%f in ("*  *") do for /f "tokens=1-9* eol= delims= " %%A in ("%%f") do ^
ren "%%f" "%%A %%B %%C %%D %%E %%F %%G %%H %%I %%J"

或者,如果您持有JREN.BAT,一个混合 JScript/批处理正则表达式重命名实用程序,那么您可以使用:

jren "  +" " " /fm "*  *"

JREN.BAT 解决方案将处理连续空格的所有实例,无论有多少。

如果您在另一个批处理脚本中使用 JREN.BAT,那么您必须使用call jren以便控制权返回到您的脚本。


推荐阅读