当前位置: 首页 > 图文教程 > 脚本技术 > DOS/BAT > 批处理应用根据文件内容进行重命名操作

DOS/BAT
自动改回主页的批处理文件
win2000/XP停止打印.bat
在当前目录生成很漂亮的结构树的批处理dir.bat
可以查杀sxs.exe的bat(批处理)文件
sz.reg转换成reg.bat的批处理
按扩展名分类批处理bat文件
查找最新的文件的批处理bat文件
用bat实现打开快捷方式指向的目录
将c:\windows.复制到当前目录并显示进度的批处理文件
用批处理解锁注册表
用批处理实现的篮球飞人火爆版
枚举当前目录及子目录大小的批处理
用批处理得到每个目录占用的空间
枚举显示批处理bat
全盘删除所有文件夹下的_desktop.ini的批处理bat文件
用批处理实现删除大小和类型一样的文件的代码
自动检测所有盘然后删除所有分区的默认共享的批处理
根据输入的文字实现输出倒文的批处理
一个可以显示c盘-z盘的批处理bat文件
用debug实现dos下重启的代码

DOS/BAT 中的 批处理应用根据文件内容进行重命名操作


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

我想实现以下的目的:
首先,我有个.dat文件,名字是固定的,需要更改这个文件名.
.dat第1行的内容是: 10107xxxxxx,代表的意思是2007.01.01,后面的x内容不固定.如果是1~9月,则第1个字符是空的.
现在要根据这行内容来改文件名.比如10107XXXXXX,改为c01-0101.cvs.
110107xxxxxx,改为c01-1101.cvs
请问该怎么写这个BAT文件.

分析:
读出第一行内容到一变量
区变量的第5个字符,可以判断是否为0
1)如果是0,取变量前2位为月份,否则取前1位,并前缀0,作为月份
2)如果是0,取变量3-4位为月份,否则取2-3位,作为日
解答:
@echo off
for %%i in (*.dat) do call :goren %%i
goto end
:goren
set /p firstln=<%1
set year=%firstln:~4,1%
if /i %year% GTR 0 (set month=0%firstln:~0,1%& set day=%firstln:~1,2%) else (
set month=%firstln:~0,2%& set day=%firstln:~2,2%
)
ren %1 c01-%month%%day%.cvs
goto end
:end