要批量减少文件名中的空格

问题描述 投票:0回答:1

使用批处理文件对许多文件进行批处理重命名后,我发现命名结构如下所示:

FILENAME __ ###。jpg

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

非常感谢。

windows batch-file command-prompt file-rename
1个回答
1
投票

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

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

上面的代码将处理任意数量的连续空格并将其转换成一个空格。

如果您有多个空格,则可以简单地解析出更多标记。您不必担心解析的令牌多于现有的令牌,因为Windows会自动修剪文件名中的尾随空格和点。一个FOR /F最多可以处理31个空格运行(32个令牌),并且很容易处理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,以便控件返回到脚本。

© www.soinside.com 2019 - 2024. All rights reserved.