中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-08 12:12
47,811 主题排行 / 349,895 发帖 / 今日 0 篇 / 48,253 会员排行
DOS批处理 & 脚本技术(批处理室) » 请教高手:改文件名
可打印版本  1,262 / 12
第1楼 shanyinwx 发表于 2008-05-07 18:43
初级用户 发帖 16 积分 31
请教高手:改文件名
我这里有几千个TXT文件,其文件名都是数字或者字母组合的,如:89u.txt、fsa.txt、tfsd.txt等,很难从一大堆文件中分清楚到底谁是谁,要是逐个地打开查找费时又费力,这样就给查阅带来了很大的不方便,。如果能将文件内容的前10个字符添替换为文件名,起到索引的作用,找起文件来就方便省事多了。但是文件内容大多开头都有空行,所以我想将搜寻内容定在前3行,长度为10个字符(不分中英文),这样文件名就是以文件内容开头的前10个字符组成的,查阅起来就方便多了,
请高手指教我该怎么写这样一个批处理。。
第2楼 pusofalse 发表于 2008-05-07 19:08
银牌会员 发帖 646 积分 1,604
但是文件内容大多开头都有空行,所以我想将搜寻内容定在前3行。。。。
----------------------------------------------
这句没看懂~~~
应该举个实例
比如 89u.txt中的内容如下:
-----------start here-----------------


1234567890ajfdlaj
asfdafak;adsf
afdk;lfda
--------cut here--------------------
是不是把89u.txt改成1234567890.txt?
第3楼 slore 发表于 2008-05-07 19:30
铂金会员 发帖 2,478 积分 5,212
for是忽略空行的……
第4楼 pusofalse 发表于 2008-05-07 19:44
银牌会员 发帖 646 积分 1,604
如果真是这样。。。。试下下面的代码吧
@echo off&setlocal enabledelayedexpansion
for %%a in (*.txt) do (
set n=0
for /f "delims=" %%i in (%%a) do (
set/a n+=1
if !n! equ 1 set str=%%i&ren %%a !str:~0,10!.txt
)
)
pause
rem 如果行中有特殊字符会出错。。如果两个文件中的第一行的前10个字符一样,也会出错
第5楼 bat-zw 发表于 2008-05-07 21:13
金牌会员 发帖 1,276 积分 3,105
没测试:


[ Last edited by zw19750516 on 2008-5-7 at 10:09 PM ]
第6楼 26933062 发表于 2008-05-07 21:46
银牌会员 发帖 879 积分 2,268
第7楼 shanyinwx 发表于 2008-05-08 00:43
初级用户 发帖 16 积分 31
Originally posted by pusofalse at 2008-5-7 07:08 PM:
但是文件内容大多开头都有空行,所以我想将搜寻内容定在前3行。。。。
----------------------------------------------
这句没看懂~~~
应该举个实例
比如 89u ...

对,就是这样
第8楼 pusofalse 发表于 2008-05-08 00:47
银牌会员 发帖 646 积分 1,604
Originally posted by shanyinwx at 2008-5-8 12:43 AM:

对,就是这样

OK 那就用我那代码吧 但第一行的前十个字符中如果有特殊字符的话,不能保证不会出错
第9楼 shanyinwx 发表于 2008-05-08 00:47
初级用户 发帖 16 积分 31
谢谢各位高手。。
第10楼 shanyinwx 发表于 2008-05-08 01:03
初级用户 发帖 16 积分 31
但是现在我又发现了一个问题:还有很多的文件内容在开头的几行是相同的,这样就只能命名一个文件,而其他的文件则不能改名,改怎么办,再次请教高手?能不能在这些文件名的后面加个数字或者什么的来区分呢?

[ Last edited by shanyinwx on 2008-5-8 at 01:29 AM ]
第11楼 pusofalse 发表于 2008-05-08 01:34
银牌会员 发帖 646 积分 1,604
Originally posted by shanyinwx at 2008-5-8 01:03 AM:
但是现在我又发现了一个问题:还有很多的文件内容在开头的几行是相同的,这样就只能命名一个文件,而其他的文件则不能改名,改怎么办,再次请 ...


如果存在重名的,就提取文件中第一行的前11个字符作为文件名,其他的仍是前10个。。。。


[ Last edited by pusofalse on 2008-5-8 at 01:39 AM ]
第12楼 26933062 发表于 2008-05-08 01:46
银牌会员 发帖 879 积分 2,268
那就这样,若有重名文件就在后面加序号。
第13楼 shanyinwx 发表于 2008-05-08 06:48
初级用户 发帖 16 积分 31
非常感谢。。。。。
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023