batch-file - 使用 Windows ren 命令删除 !从文件名

标签 batch-file cmd

我有一堆格式如下的文件

filename-!#.ext

其中 # 是一个递增的数字,以防止冲突。我只想删除!从文件名,所以它读为
filename-#.ext

似乎我可以使用 ren 命令和通配符来做到这一点,但很难让它工作。我试着运行这个:
ren *!?.ext *?.ext

我的想法是 * 应该匹配文件名部分,然后是!,然后是?为数字。但是,生成的文件被命名为:
filename-!#.ext.ext

我不知道为什么。

文件名部分可以是动态的,但不包含任何!有任何想法吗?

最佳答案

根据您提供的信息,只是为了提供一些不同的东西,您可以让延迟扩展为您完成工作,(因为它会为您删除不需要的感叹号)。!

@For %%A In ("*-!?.ext") Do @Set "_=%%A" & SetLocal EnableDelayedExpansion & Ren "!_!" "%%A" & EndLocal

您也可以使用嵌套的 for 循环来做到这一点:

@For %%A In ("*-!?.ext") Do @For /F "Tokens=1*Delims=!" %%B In ("%%A") Do @Ren "%%A" "%%B%%C"

…并从命令提示符中:

For %A In ("*-!?.ext") Do @For /F "Tokens=1*Delims=!" %B In ("%A") Do @Ren "%A" "%B%C"

关于batch-file - 使用 Windows ren 命令删除 !从文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51861296/

相关文章:

batch-file - VBS 替换消息框而不是放在顶部

powershell - 通过批处理文件运行多个 VS Code 项目(一次)

batch-file - Hbase批量查询示例

windows - 使用bat文件获取和删除redis数据

windows - For 循环运行两次,但仅针对第一个文件

windows - 批处理文件 - 检查命令是否可用

windows - 在 Windows 上查找父进程 ID

batch-file - 将多种格式的多个文件转换为mkv

windows - 如何在Windows Batch中回显>不带引号的字符? [复制]

python - 为什么我会收到无效的语法错误?