Board logo

标题: [文件操作] 批处理如何去掉/删除文件名中的指定前缀字符串? [打印本页]

作者: regabc    时间: 2011-5-15 09:07     标题: 批处理如何去掉/删除文件名中的指定前缀字符串?

本帖最后由 pcl_test 于 2016-8-12 16:30 编辑

批处理如何去掉前缀的文件名?
例如:
batman_1.txt
batman_2.txt
batman_3.txt
batman_4.txt
batman_5.txt

如何变成:
1.txt
2.txt
3.txt
4.txt
5.txt
而且还要遍历
作者: wc726842270    时间: 2011-5-15 09:12

能否指明一下遍历的对像(是全盘还是某个文件夹),另外想学的话,还是先看一下FOR的应用吧,这个是精髓中的精髓
作者: Hello123World    时间: 2011-5-15 10:15

假设你要修改的文件在c:\hello文件夹
  1. @echo off
  2. for /r "c:\hello" %%a in (*.txt) do (for /f "delims=_ tokens=2" %%i in ("%%a") do ren "%%a" "%%~nxi")
  3. pause>nul
复制代码

作者: vsbat    时间: 2011-5-15 10:25

  1. for /f "tokens=2 delims=_" %%i in ('dir /b batman_*.txt') do (
  2. ren "batman_%%i"  "%%i"
  3. )
  4. pause
复制代码

作者: yjstone    时间: 2011-5-15 17:13

本帖最后由 yjstone 于 2011-5-16 11:05 编辑

4楼的代码不能遍历文件夹,要加 /s参数 ,而3楼的代码遇到文件夹名字中间带有"_"字符会出错,稍为修改一下就可以了:
  1. @echo off
  2. for /r %%a in (*.txt) do (for /f "delims=_ tokens=2" %%i in ("%%~nxa") do ren "%%a" "%%i")
  3. pause>nul
复制代码

作者: batman    时间: 2011-5-15 17:28

本帖最后由 batman 于 2011-5-15 17:35 编辑

为什么要用我的id来命名文件。。。
  1. @echo off&setlocal enabledelayedexpansion
  2. for /r %%a in (*.txt) do (
  3.      set "str=%%~na"
  4.      ren "%%a" "!str:*_=!%%~xa"
  5. )
复制代码

作者: applba    时间: 2011-5-15 23:56

!str:batman-=!
和楼上一样强大
如果要遍历,必须使用for /r
作者: vsbat    时间: 2011-5-16 07:59

本帖最后由 vsbat 于 2011-5-16 08:00 编辑

谁说遍历就得for  /r ,dir /ad 不行啊

另外:LZ 没说遍历的是所有文件夹,我按照遍历当前文件夹中所有文件所写
作者: Batcher    时间: 2011-5-16 10:54

7# applba


如果楼主说的“遍历”是指包含子文件夹的话,你可以试试dir /s行不行,然后再决定for /r是否依然“必须”。
作者: pcl_test    时间: 2016-8-12 16:33

第三方
  1. ren2 -f "batman_(.*)" "$1"
复制代码
  1. ren2 -f ".+_(.*)" "$1"
复制代码





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