
标题: [文件操作] 批处理如何删除文件名中两个指定字符之间的字符串 [打印本页]
作者: 我是一只小小鸟 时间: 2018-4-17 09:06 标题: 批处理如何删除文件名中两个指定字符之间的字符串
修改文件名
有一些文件名,“非科学”的中国传统舆图:中国传统舆图绘制研究=THE STUDY ON THE CARTOGRAPHIC METHOD OF THE CHINESE ANCIENT MAPS_13944758
如上,需要把等号 后面的英文全部删除_下划线和下划线后面的数字要保留
英文很多这种等号后面的英文,导致文件名特别长,所以想请教大神,如何用批处理,把这些都删除。
作者: yhcfsr 时间: 2018-4-17 09:20
本帖最后由 yhcfsr 于 2018-4-17 10:46 编辑
- @echo off
- for /f "delims=" %%a in ('dir /a-d/s/b^|findstr "= _"') do (
- for /f "tokens=1,3 delims==_" %%i in ("%%~nxa") do ren "%%a" "%%i_%%j"
- )
复制代码
作者: 我是一只小小鸟 时间: 2018-4-17 09:50
本帖最后由 我是一只小小鸟 于 2018-4-17 09:52 编辑
回复 2# yhcfsr
你好,可能是我表达没有说清楚,我需要的是 中文名留下,英文名字删除
我这里文件名命名规则是 中文=English_12345678
是这样的格式
其中,我需要删除的是 等号及其后面的英文, 保留 中文_123456
不知我这样的表述,可以看懂吗
当然,不用太理会前面是否中文,只要考虑 等号 后面和_ 号前面的 文件名删除,就可以了
作者: yhcfsr 时间: 2018-4-17 10:35
本帖最后由 yhcfsr 于 2018-4-17 10:46 编辑
回复 3# 我是一只小小鸟
已改,二楼。
作者: WHY 时间: 2018-4-17 10:55
- @echo off
- for /f "tokens=1-2* delims==_" %%i in ('dir /b /a-d "*=*_*"') do (
- ren "%%i=%%j_%%k" "%%i_%%k"
- )
- pause
复制代码
- PowerShell -c "dir *=*_*.* | ren -newName { $_.Name -replace '=[^_]*' }"
复制代码
作者: 我是一只小小鸟 时间: 2018-4-17 11:42
回复 2# yhcfsr
非常感谢,这段代码可以用,不过有点问题。就是,中间如果没有等号之后,他会删除_ 下划线后面的所有字符,连格式也给删除。五楼给出的代码解决了这个问题。感谢你的热心
作者: 我是一只小小鸟 时间: 2018-4-17 11:42
回复 5# WHY
你好,非常感谢,你给出的第一段代码满足了我的需要,不过你第二段代码是做什么用的,我没有看懂
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |