标题: [文本处理] 批处理怎样给批量文件命名? [打印本页]
作者: fly88up 时间: 2009-10-23 21:15 标题: 批处理怎样给批量文件命名?
以前一碰到批量文件重命名的时候,总是喜欢用adobe bridge来处理,方便又快速。看了dos那强大的For语句之后,总想一试身手,结果总是不尽如人意,看来我需要学习的地方好多啊,特来向各位前辈讨教。。。
不说闲话,问题是这样的,我现在在d:\Datum\下面有一堆扩展名全部为.txt的文件,每一个这样的txt文件的文件名(包含扩展名)都是这样的格式:
[非数字的一串字符][数字].txt(圆括号是文件名的一部分),例如其中几个文本文件的文件名是这样的:[常用单词集合][01].txt,[DOS中的几个特殊符号][12].txt。我想把这些个文本文件统一重命名为:数字.txt,即去掉原来名字前面的那一串非数字字符仅保留数字部分,那么上面的两个文件的文件名分别变为:01.txt,12.txt。
我想尽量不通过使用中间文件的方式实现这个批量重命名,不知道那么大侠帮能忙实现下,谢谢。。
注意:这些txt文件的文件名中数字部分不会重复,所以不会造成重命名后文件同名的情况。
作者: vsbat 时间: 2009-10-23 21:41
- @echo off
- setlocal enabledelayedexpansion
- for %%i in (*.txt) do (
- for /f "tokens=2 delims=][" %%j in ("%%~ni") do set a=%%j&set a=!a:]=!&ren %%i !a!.txt)
- pause
复制代码
实现:要求格式符合下面即可
[任何字符组合][我要的名] .txt -------------------我要的名 .txt
[ 本帖最后由 vsbat 于 2010-10-31 01:31 编辑 ]
作者: fly88up 时间: 2009-10-23 21:46
强悍。。。
我怎么就老是想不到呢?总丢三落四的。。。。
佩服,是在是佩服。。
作者: fly88up 时间: 2009-10-23 21:54
原帖由 vsbat 于 2009-10-23 21:41 发表
@echo off
setlocal enabledelayedexpansion
for %%i in (*.txt) do (
for /f "tokens=2 delims=][" %%j in ("%%~ni") do set a=%%j&set a=!a:]=!&ren %%i !a!.txt)
pause
实现:要求格式符合下面即可
...
其中的那个set a=!a:]=!是什么意思,可以解释一下吗?
我不太明白这个用法。。
作者: Seter 时间: 2009-10-23 22:11
原帖由 fly88up 于 2009-10-23 21:54 发表
其中的那个set a=!a:]=!是什么意思,可以解释一下吗?
我不太明白这个用法。。
!a:A=B!就是将变量a中的A字符串改为B字符串
B可以为空,就是去掉所有A
!a:]=!就是去掉所有]
作者: fly88up 时间: 2009-10-23 22:12
谢谢!
原来是这样啊。。又学了一招。。。
[ 本帖最后由 fly88up 于 2009-10-23 22:14 编辑 ]
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |