windows - 批量减少文件名中的空格
问题描述
使用批处理文件批量重命名这么多文件后,我发现命名结构如下所示:
文件名__###.jpg
FILENAME 和编号### 之间有两个空格(上面的两个下划线)。如何在 Windows 系统的命令提示符下使用批处理命令文件为具有上述命名结构的目录下的所有文件(可能具有不同的后缀)删除一个空格(或将 2 个空格减少到 1 个空格)。
非常感谢。
解决方案
假设您没有任何以空格开头的文件名,那么
@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
以便控制权返回到您的脚本。
推荐阅读
- data-visualization - 调整 Xscale 和 Yscale
- spring - 请求处理失败;嵌套异常是 java.lang.ClassCastException: Cannot cast java.lang.String to java.time.LocalDateTime] 根本原因
- c++ - Boost 1.70 io_service 弃用
- mysql - 使用sql查询选择列中的部分值
- scala - 获取值类型标签的父枚举
- java - 使用 oauth2 授权代码和客户端凭据流配置 Spring Web 应用程序(非启动)问题
- vue.js - 为什么使用 github 操作和 azure cli 部署我的静态站点被破坏?
- angular - 使用 Angular 10 的 .Net core 3.1 应用程序在开发环境中工作,但是当我在生产环境中部署时显示 net::ERR_CONNECTION_REFUSED
- javascript - 如何将 Vuex 存储注入 Vue 3
- c++ - 在 C++ 中删除树结构