Board logo

标题: [文件操作] [已解决]BAT如何批量删除文件名中位置相同内容不相同的一部分字符 [打印本页]

作者: m_anio    时间: 2008-11-19 15:19     标题: [已解决]BAT如何批量删除文件名中位置相同内容不相同的一部分字符

我有一批图片 文件名是这样的     001_byxm314_0003
                                                    002_byxm314_0001
                                                    003_byxm314_0012
                                                    004_byxm314_0004
                                                    ……

总结一下 就是  “  ABC_相同字符_DEFG  ”
其中: ABC是 从001顺序排列的数字   
            DEFG  也是数字   但是没有顺序

我现在想去掉文件名中 "  ABC_  "   这四个位置的字符  请问有什么批量处理的办法吗??

谢谢~~~


或者干脆就是一个任意的文件名 ABCDEFGHIJK  我想把 其中的 ABCD 删掉 其他的EFGHIJK 都保持不变  有高手可以帮忙吗 谢谢了~~
作者: m_anio    时间: 2008-11-20 11:34

……
没有人能帮我解决吗~~  请问各位 是这个问题是很白痴还是很不好解决呢???
我有好多这种图片 我现在只能一个一个的删除 很麻烦的~
谁能帮帮忙啊 谢谢了~~
作者: Batcher    时间: 2008-11-20 11:37

随手写的,未测试。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for %%a in (*.jpg) do (
  4.   set "newName=%%a"
  5.   ren "%%a" "!newName:~4!"
  6. )
复制代码

作者: 随风    时间: 2008-11-20 15:56

呵呵,重命名,正是bat的拿手好戏。。
重命名带数字的文件时直接用for遍历文件好像存在bug建议最好使用dir+for
  1. @echo off&Setlocal EnableDelayedExpansion
  2. for /f "delims=" %%a in ('dir/b *.jpg') do (
  3.    set "name=%%a"
  4.    ren "%%a" "!name:~4!"
  5. )
  6. pause
复制代码
如果文件名第4位都是_下划线的话,也可以不用开启延迟变量。
  1. @echo off
  2. for /f "tokens=1* delims=_" %%a in ('dir/b *.jpg') do (
  3.    ren "%%a_%%b" "%%b"
  4. )
  5. pause
复制代码

[ 本帖最后由 随风 于 2008-11-20 15:59 编辑 ]
作者: m_anio    时间: 2012-11-3 11:11

经过多年的积累 发现一个很好用的软件 叫Bulk Rename Utility 可以解决所有重命名问题
作者: BAT-VBS    时间: 2012-11-3 18:26

回复 5# m_anio


这几年时间如果踏踏实实学习BAT或者VBS的话,任何重命名问题都不用依靠其它软件。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2