我有一堆格式如下的文件
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/