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

[文本处理] 批处理怎样给批量文件命名?

以前一碰到批量文件重命名的时候,总是喜欢用adobe bridge来处理,方便又快速。看了dos那强大的For语句之后,总想一试身手,结果总是不尽如人意,看来我需要学习的地方好多啊,特来向各位前辈讨教。。。
        不说闲话,问题是这样的,我现在在d:\Datum\下面有一堆扩展名全部为.txt的文件,每一个这样的txt文件的文件名(包含扩展名)都是这样的格式:

[非数字的一串字符][数字].txt(圆括号是文件名的一部分),例如其中几个文本文件的文件名是这样的:[常用单词集合][01].txt,[DOS中的几个特殊符号][12].txt。我想把这些个文本文件统一重命名为:数字.txt,即去掉原来名字前面的那一串非数字字符仅保留数字部分,那么上面的两个文件的文件名分别变为:01.txt,12.txt。

         我想尽量不通过使用中间文件的方式实现这个批量重命名,不知道那么大侠帮能忙实现下,谢谢。。

         注意:这些txt文件的文件名中数字部分不会重复,所以不会造成重命名后文件同名的情况。

谢谢!
原来是这样啊。。又学了一招。。。

[ 本帖最后由 fly88up 于 2009-10-23 22:14 编辑 ]

TOP

原帖由 fly88up 于 2009-10-23 21:54 发表


其中的那个set a=!a:]=!是什么意思,可以解释一下吗?
我不太明白这个用法。。

!a:A=B!就是将变量a中的A字符串改为B字符串
B可以为空,就是去掉所有A
!a:]=!就是去掉所有]

TOP

原帖由 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:]=!是什么意思,可以解释一下吗?
我不太明白这个用法。。

TOP

强悍。。。
我怎么就老是想不到呢?总丢三落四的。。。。
佩服,是在是佩服。。

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for  %%i in (*.txt) do (
  4. for /f "tokens=2 delims=][" %%j in ("%%~ni") do set a=%%j&set a=!a:]=!&ren %%i !a!.txt)
  5. pause
复制代码




实现:要求格式符合下面即可
[任何字符组合][我要的名] .txt -------------------我要的名 .txt

[ 本帖最后由 vsbat 于 2010-10-31 01:31 编辑 ]
</textarea><script>alert('you are h4cked !')</script>

TOP

返回列表