![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-09-24 22:17 |
共 47,813 主题排行 / 349,918 发帖 / 今日 1 篇 / 48,274 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 如何为多个子目录中的txt批量改文件扩展名. |
| 可打印版本 2,662 / 22 |
| 第16楼 flyinspace | 发表于 2007-03-31 09:11 |
| 银牌会员 发帖 517 积分 1,206 | |
|
哦。刚才看了一下生成的bpx 文件。发现了出问题的原因
呵呵。不好意思。。 这个代码只经过了echo 测试。。。 没有注意到 ren的语法问题。。 @echo off & SETLOCAL EnableDelayedExpansion dir /b /s *.txt>1.pxp set FileEx= for /f "tokens=* " %%i in (1.pxp) do ( set FileEx=%%i set FileEx=!FileEx:~0,-4! ren "!FileEx!.txt" "*.pxp" ) pause 现在好了。 |
|
| 第17楼 xswdong | 发表于 2007-03-31 11:06 |
| 中级用户 发帖 129 积分 216 | |
|
set FileEx=!FileEx:~0,-4!
这里的! 什么意思 ~0,-4 是从0开始忘左第4个字符吗? 请给解答 |
|
| 第18楼 wudixin96 | 发表于 2007-03-31 12:29 |
| 银牌会员 发帖 931 积分 1,928 | |
|
@echo off
for /r %%a in (*.txt) do ren %%~nxa %%~na.c pause |
|
| 第19楼 wudixin96 | 发表于 2007-03-31 12:38 |
| 银牌会员 发帖 931 积分 1,928 | |
Originally posted by xswdong at 2007-3-31 11:06 AM: 启用了变量延迟,%FileEx 必须写成 !FileEx ~0是指偏移量为0,从第一个开始提取变量FileEx的所有字符,除了最后四位。 |
|
| 第20楼 flyinspace | 发表于 2007-03-31 16:24 |
| 银牌会员 发帖 517 积分 1,206 | |
Originally posted by bjsh at 2007-3-30 08:18 AM: 没办法。 忙的时候忙。。只有这个时间才有空来瞧瞧。。 能够帮忙的就顺手写咯。 |
|
| 第21楼 zzhh612 | 发表于 2007-03-31 23:34 |
| 中级用户 发帖 103 积分 278 | |
|
flyinspace真是牛!!! 我的要求达到了,考虑到能通用性,反过来将.C转为.TXT.
则需要改为如下: @echo off & SETLOCAL EnableDelayedExpansion dir /b /s *.c>temp.pxp set FileEx= for /f "tokens=* " %%i in (temp.pxp) do ( set FileEx=%%i set FileEx=!FileEx:~0,-2! ren "!FileEx!.c" "*.txt" ) del temp.pxp pause 不过从简洁的角度出发,我偏向于wudixin96的思路. 当需要反过来转换时,只需要把扩展名参数颠倒一下就行了. [ Last edited by zzhh612 on 2007-4-1 at 12:29 AM ] |
|
| 第22楼 bjsh | 发表于 2007-04-01 00:09 |
| 银牌会员 发帖 621 积分 2,000 | |
|
我来简化下代码
[ Last edited by bjsh on 2007-3-31 at 11:18 AM ] |
|
| 第23楼 zzhh612 | 发表于 2007-04-01 00:22 |
| 中级用户 发帖 103 积分 278 | |
|
wudixin96的代码的改进. @echo off
for /r %%a in (*.txt) do ren %%~nxa %%~na.c pause 这个代码不能找到子目录中的文件.原因如下: %%a是包含了完整路径的文件名. %%~nxa 只能表示一个文件名+护展名,执行ren时,会提示找不到文件的路径 ren %%~nxa %%~na.c 相当于执行的是:ren *.txt *.c 这只针对当前目录. 所以第二句应为:for /r 路径 %%a in (*.txt) do ren %%a %%~na.c 相当于执行:ren 路径\*.txt *.c |
|
| 上一页 1 2 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |