CMD批处理将文件命中的-替换成_
时间: 2024-12-01 17:11:22 浏览: 13
在CMD批处理脚本中,如果你想把文件名中的减号("-")替换为下划线("_"),可以使用`ren`命令结合正则表达式来进行这种替换。下面是一个例子:
```cmd
@echo off
setlocal enabledelayedexpansion
for /F "delims=" %%a in ('dir /B ^| findstr /R "^-.*$"') do (
set "newName=%%a!replace(-,_)!%%~xa"
ren "%%a" "!newName!"
)
endlocal
```
这段脚本的工作流程如下:
1. `@echo off` 关闭命令提示符的回显,以便看不到命令行的每次迭代。
2. `setlocal enabledelayedexpansion` 开启延迟环境变量扩展,这样我们可以在字符串操作中直接修改变量的值。
3. `for /F "delims=" %%a in ('dir /B ^| findstr /R "^-.*$"`): 使用`findstr`过滤出仅含有减号的文件名,`^` 是转义字符,防止正则表达式的特殊含义。`/B` 参数让`dir`只显示文件名。
4. `set "newName=%%a!replace(-,_)!%%~xa"`:创建新名字,使用`replace`函数替换原有的减号为下划线,并保留文件扩展名。
5. `ren "%%a" "!newName!"`: 将找到的文件名(原名`%%a`)重命名为新的名称`!newName!`。
6. `endlocal` 结束延迟环境变量扩展并关闭`setlocal`。
阅读全文