[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 批处理如何删除文件名中两个指定字符之间的字符串

修改文件名

有一些文件名,“非科学”的中国传统舆图:中国传统舆图绘制研究=THE STUDY ON THE CARTOGRAPHIC METHOD OF THE CHINESE ANCIENT MAPS_13944758

如上,需要把等号 后面的英文全部删除_下划线和下划线后面的数字要保留

英文很多这种等号后面的英文,导致文件名特别长,所以想请教大神,如何用批处理,把这些都删除。

本帖最后由 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. )
复制代码

TOP

本帖最后由 我是一只小小鸟 于 2018-4-17 09:52 编辑

回复 2# yhcfsr


    你好,可能是我表达没有说清楚,我需要的是  中文名留下,英文名字删除

我这里文件名命名规则是    中文=English_12345678
  是这样的格式
其中,我需要删除的是   等号及其后面的英文,     保留  中文_123456

不知我这样的表述,可以看懂吗


当然,不用太理会前面是否中文,只要考虑   等号  后面和_ 号前面的 文件名删除,就可以了

TOP

本帖最后由 yhcfsr 于 2018-4-17 10:46 编辑

回复 3# 我是一只小小鸟
已改,二楼。

TOP

  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 '=[^_]*' }"
复制代码

TOP

回复 2# yhcfsr


    非常感谢,这段代码可以用,不过有点问题。就是,中间如果没有等号之后,他会删除_ 下划线后面的所有字符,连格式也给删除。五楼给出的代码解决了这个问题。感谢你的热心

TOP

回复 5# WHY


    你好,非常感谢,你给出的第一段代码满足了我的需要,不过你第二段代码是做什么用的,我没有看懂

TOP

返回列表