![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-09-15 12:18 |
共 47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,268 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 修改文件名前缀的问题 |
| 可打印版本 6,003 / 18 |
| 第1楼 26933062 | 发表于 2006-12-24 03:45 |
| 银牌会员 发帖 879 积分 2,268 | |
|
修改文件名前缀的问题 我想批量修改文件名前缀要求如下
原文件名a.txt b.txt ll.txt sds.txt..................有很多 要求:原文件名不变只是在后面加上序号如: a1.txt b2.txt ll3.txt sds4.txt.........size] |
|
| 第2楼 lxmxn | 发表于 2006-12-24 04:06 |
| 版主 发帖 4,938 积分 11,386 | |
|
将此批处理和要处理的文件放在同一个文件夹里面,运行这个批处理即可。 |
|
| 第3楼 namejm | 发表于 2006-12-24 04:13 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
这个序号是按照什么规律加上去的?按照原文件名的字母升序排列依次加的吗?
|
|
| 第4楼 scriptor | 发表于 2006-12-24 04:13 |
| 银牌会员 发帖 555 积分 1,187 | |
另一个Originally posted by 26933062 at 2006-12-23 14:45: |
|
| 第5楼 26933062 | 发表于 2006-12-24 04:20 |
| 银牌会员 发帖 879 积分 2,268 | |
|
厉害,太谢谢了,以后多跟你学习.能解释一下红字部分吗?再次谢谢
@echo off&setlocal EnableDelayedExpansion set a=1 for /f "delims=" %%i in ('dir /a-d/b/s *.txt') do ( if not "%%~ni"=="%~n0" ( ren "%%i" "%%~ni!a!%%~xi" set/a a+=1 ) ) [ Last edited by 26933062 on 2006-12-23 at 03:58 PM ] |
|
| 第6楼 ccwan | 发表于 2006-12-24 04:27 |
| 金牌会员 发帖 1,160 积分 2,725 来自 河北廊坊 | |
|
大意是如果文件名不是自身(批处理)名称
即不修改自身名称 |
|
| 第7楼 scriptor | 发表于 2006-12-24 04:46 |
| 银牌会员 发帖 555 积分 1,187 | |
|
『第 6 楼』:
强 不过同一个文件夹里有很多的其他的文件,它照改不误,我改写了以下,让它只针对某类文件: @echo off&setlocal EnableDelayedExpansion dir | find ".txt" >name.txt set a=1 for /f "delims=" %%i in (name.txt) do ( if not "%%~ni"=="%~n0" ( ren "%%i" "%%~ni!a!%%~xi" set/a a+=1 ) ) set/a a+=1 好象不起作用啊?? |
|
| 第8楼 lxmxn | 发表于 2006-12-24 04:47 |
| 版主 发帖 4,938 积分 11,386 | |
|
4楼这个局限性太大了。 |
|
| 第9楼 namejm | 发表于 2006-12-24 04:57 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
7楼的代码也并非只针对某一类型的文件,如果文件名取得很特别,它简直就是任何类型通吃呢——只要文件名或后缀名中含有 .txt 都可以,根本原因在于 find 查找字符串的时候,并不能控制字符串出现的位置。
要针对某种类型的文件,最简洁的还是用 dir 命令,在2楼的基础上稍微改造一下就可以了,比如改成 dir /a-d/b/s *.txt。 |
|
| 第10楼 scriptor | 发表于 2006-12-24 05:15 |
| 银牌会员 发帖 555 积分 1,187 | |
|
狂谢 呵呵
我的机器上不能通过 set /a a+=1 怎么回事? |
|
| 第11楼 ccwan | 发表于 2006-12-24 05:19 |
| 金牌会员 发帖 1,160 积分 2,725 来自 河北廊坊 | |
| 第12楼 ccwan | 发表于 2006-12-24 05:20 |
| 金牌会员 发帖 1,160 积分 2,725 来自 河北廊坊 | |
|
你的 dir | find ".txt" >name.txt 命令,生成的name.txt里有空格,以你的代码,会忽略空格后的内容
|
|
| 第13楼 scriptor | 发表于 2006-12-24 05:30 |
| 银牌会员 发帖 555 积分 1,187 | |
帮忙改正吧Originally posted by ccwan at 2006-12-23 16:20: 我也不知道怎么改, 帮忙改一下吧! 谢了 |
|
| 第14楼 ccwan | 发表于 2006-12-24 05:35 |
| 金牌会员 发帖 1,160 积分 2,725 来自 河北廊坊 | |
|
11楼???
|
|
| 第15楼 lxmxn | 发表于 2006-12-24 08:45 |
| 版主 发帖 4,938 积分 11,386 | |
|
上面的 dir | find ".txt" >name.txt 换成 dir /b/a-d *.txt>name.txt 或者 dir /a-d/b|findstr /i ".vbs$" >name.txt的效果应该是一样的。 |
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |