标题: [文件操作] 批处理如何去掉/删除文件名中的指定前缀字符串? [打印本页]
作者: 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文件夹- @echo off
- for /r "c:\hello" %%a in (*.txt) do (for /f "delims=_ tokens=2" %%i in ("%%a") do ren "%%a" "%%~nxi")
- pause>nul
复制代码
作者: vsbat 时间: 2011-5-15 10:25
- for /f "tokens=2 delims=_" %%i in ('dir /b batman_*.txt') do (
- ren "batman_%%i" "%%i"
- )
- pause
复制代码
作者: yjstone 时间: 2011-5-15 17:13
本帖最后由 yjstone 于 2011-5-16 11:05 编辑
4楼的代码不能遍历文件夹,要加 /s参数 ,而3楼的代码遇到文件夹名字中间带有"_"字符会出错,稍为修改一下就可以了:- @echo off
- for /r %%a in (*.txt) do (for /f "delims=_ tokens=2" %%i in ("%%~nxa") do ren "%%a" "%%i")
- pause>nul
复制代码
作者: batman 时间: 2011-5-15 17:28
本帖最后由 batman 于 2011-5-15 17:35 编辑
为什么要用我的id来命名文件。。。- @echo off&setlocal enabledelayedexpansion
- for /r %%a in (*.txt) do (
- set "str=%%~na"
- ren "%%a" "!str:*_=!%%~xa"
- )
复制代码
作者: 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
第三方- ren2 -f "batman_(.*)" "$1"
复制代码
或复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |