Board logo

标题: [文件操作] 批处理如何删除文件名中两个指定字符之间的字符串 [打印本页]

作者: 我是一只小小鸟    时间: 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 编辑
  1. @echo off
  2. for /f "delims=" %%a in ('dir /a-d/s/b^|findstr "= _"') do (
  3. for /f "tokens=1,3 delims==_" %%i in ("%%~nxa") do ren "%%a" "%%i_%%j"
  4. )
复制代码

作者: 我是一只小小鸟    时间: 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

  1. @echo off
  2. for /f "tokens=1-2* delims==_" %%i in ('dir /b /a-d "*=*_*"') do (
  3.     ren "%%i=%%j_%%k" "%%i_%%k"
  4. )
  5. pause
复制代码
  1. 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