![]() |
中国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: 对,就是这样 |
|
| 第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 |