当前位置: 首页 > 图文教程 > 脚本技术 > DOS/BAT > 用批处理实现将文件以数字重命名的代码

DOS/BAT
在远程计算机的CMD内下载FTP文件的方法
推荐一篇批处理最完整人性化教程
用批处理实现auto.exe的免疫功能
[原创]服务器应用自动重新启动IIS批处理
命令行实现MAC与IP地址绑定 ip mac绑定 如何绑定mac地址
diskcopy 命令使用说明
arp病毒 防止arp病毒的批处理
del rd命令行下删除文件不需要确认
dos下用recover修复损坏的TXT文件
批处理设置windows服务器的代码ThecSafe1.9.4
[原创]服务器常用批处理代码
利用mshta调用运行js或vbs的
DOS命令 Interlnk、Intersvr命令使用说明
dos shutdown 关机命令
systeminfo 系统命令快速查看你的系统几岁了
批处理删除空文件夹
BAT加密工具 EncryBat 非编译型bat批处理加密方案与代码
SendTo增强版 批处理实用小工具
DNS批量溢出批处理代码
修改系统用户名的批处理代码

DOS/BAT 中的 用批处理实现将文件以数字重命名的代码


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-12   浏览: 223 ::
收藏到网摘: n/a

讨论:将文件以数字重命名 看似简单,其实不然。 现有a.txt文件内容如下,一行一个文件名。路径为当前目录。 要求:
1、不能改变a.txt内容的顺序
2、将当前目录下的所有jpg文件以序号的形式重命名 如:从1-16
3、如果有16个文件,必须重命名为1-16,不允许出现16之后的序号
a.txt 内容:
复制代码 代码如下:

2.jpg
1.jpg
a.jpg
5ww.jpg
c.jpg
f.jpg
rty.jpg
3.jpg
11.jpg
b.jpg
6.jpg
e.jpg
8.jpg
111.jpg
7.jpg
30.jpg

a.txt中的内容其实就是当前文件夹下的jpg文件列表。
要求将当前文件夹里的所有jpg文件以序号的形式重命名。
但只能从 a.txt 获取当前文件夹里的所有 jpg 的文件名。
以序号重命名文件,陷阱重重,但如果用dir或for等命令来获取文件名的话,获取的先后次序会有一定规律,导致有些问题不能体现出来
复制代码 代码如下:

@echo on
setlocal enabledelayedexpansion
set n=0
set n1=0
for /f "tokens=*" %%a in (a.txt) do (
set /a n+=1
ren %%a t!n!.jpg
)
:loop
set /a n1+=1
ren t%n1%.jpg %n1%.jpg&&goto :loop
exit

第二种方法
好像可以更简单点
复制代码 代码如下:

@echo off
ren *.jpg t*.jpg
setlocal enabledelayedexpansion
for /f "delims=" %%a in ('dir/b "t*.jpg"') do (
set str=%%a&set str=!str:~1!
ren "%%a" "!str!"
)
pause