中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何为多个子目录中的txt批量改文件扩展名.
作者:
标题: 如何为多个子目录中的txt批量改文件扩展名. 上一主题 | 下一主题
zzhh612
中级用户




积分 278
发帖 103
注册 2006-10-21
状态 离线
『楼 主』:  如何为多个子目录中的txt批量改文件扩展名.

在一个目录下的若干个子目录中有许多以文本方式保存的C代码. 我怎样才能用一个批处理将这些以TXT为扩展名的代码文档变成以.C为扩展名的C源文件. [ Last edited by zzhh612 on 2007-3-31 at 01:48 AM ]


2007-3-30 13:04
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
flyinspace
银牌会员





积分 1206
发帖 517
注册 2007-3-25
状态 离线
『第 2 楼』:  

哦。很简单啊。。


2007-3-30 13:14
查看资料  发短消息  网志   编辑帖子  回复  引用回复
flyinspace
银牌会员





积分 1206
发帖 517
注册 2007-3-25
状态 离线
『第 3 楼』:  

@echo off dir /b /a *.txt>1.txt for /f "tokens=1,2 delims=. " %%i in (1.txt) do ren %%i.txt %%i.c


2007-3-30 13:16
查看资料  发短消息  网志   编辑帖子  回复  引用回复
MagiCube
新手上路





积分 4
发帖 2
注册 2007-3-30
状态 离线
『第 4 楼』:  

在XP下面,用命令ren *.txt *.c就可以把当前目录下所有.txt文件重命名为.c文件啦 初来乍到,看到这里很多高手,很多复杂的语法还不懂,像这个应该没有必要用复杂的方法吧


2007-3-30 13:31
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
flyinspace
银牌会员





积分 1206
发帖 517
注册 2007-3-25
状态 离线
『第 5 楼』:  

呵呵,头脑发昏了。


2007-3-30 13:32
查看资料  发短消息  网志   编辑帖子  回复  引用回复
zzhh612
中级用户




积分 278
发帖 103
注册 2006-10-21
状态 离线
『第 6 楼』:  

不知flyinspace 试过了没有.目录列表应用dir /b /s才对.这样可以把文件名写入1.txt,但在执行重命名文件时,会提示找不到文件的路径.兄弟的代码怕是需要改进吧.也许思路是对的. 我想用批处理解决的原因是文本存在于多个不同级数的子目录下,单用命令REN来做很是麻烦的,当然WINDOWS下有批量改名的软件,我是想在实践中学一学批处理.不能总只靠一种方法来解决问题吧. [ Last edited by zzhh612 on 2007-3-30 at 01:51 PM ]


2007-3-30 13:43
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
MagiCube
新手上路





积分 4
发帖 2
注册 2007-3-30
状态 离线
『第 7 楼』:  

有理


2007-3-30 14:00
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
flyinspace
银牌会员





积分 1206
发帖 517
注册 2007-3-25
状态 离线
『第 8 楼』:  

呵,都说过了呀。 没有注意的。。。 忘记加几个参数了。 还有那个名字可以随便写的。 不一定是.txt 随便写个。fly也行啊。


2007-3-30 14:08
查看资料  发短消息  网志   编辑帖子  回复  引用回复
flyinspace
银牌会员





积分 1206
发帖 517
注册 2007-3-25
状态 离线
『第 9 楼』:  

试过了没有.目录列表应用dir /b /s才对.这样可以把文件名写入1.txt,但在执行重命名文件时,会提示找不到文件的路径.兄弟的代码怕是需要改进吧.也许思路是对的. ?? 不是吧? 这个dir /b /s是可以随便写的。。 写dir /s /b都一样。。


2007-3-30 14:10
查看资料  发短消息  网志   编辑帖子  回复  引用回复
flyinspace
银牌会员





积分 1206
发帖 517
注册 2007-3-25
状态 离线
『第 10 楼』:  

噢。开始你的要求里面没有子目录的。 就没有加上 /s参数。


2007-3-30 14:13
查看资料  发短消息  网志   编辑帖子  回复  引用回复
flyinspace
银牌会员





积分 1206
发帖 517
注册 2007-3-25
状态 离线
『第 11 楼』:  

@echo off dir /b /a /s *.txt>1.bpx for /f "tokens=1,2 delims=. " %%i in (1.bpx) do ren %%i.txt %%i.c 加/a参数是为了防止有隐藏文件的出现。


2007-3-30 14:15
查看资料  发短消息  网志   编辑帖子  回复  引用回复
zzhh612
中级用户




积分 278
发帖 103
注册 2006-10-21
状态 离线
『第 12 楼』:  

flyinspace的代码在执行时仍会提示系统找不到文件. 没有能改名,只有根目录下的被改了, 我自己得来的,试过了还行 @echo off FOR /R c:\test %%a IN (*.txt) DO (ren %%a %%~na.c) pause 只是文件名不能有逗号,当然这本来也不规范,所以也没有想法来包括它了,如果非要包括进来,也只有高手来解决了.. [ Last edited by zzhh612 on 2007-3-30 at 02:57 PM ]


2007-3-30 14:48
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
flyinspace
银牌会员





积分 1206
发帖 517
注册 2007-3-25
状态 离线
『第 13 楼』:  

哦。我自己试过了啊? 所有的目录下的文件都可以更改? 要想最规范的话。还要加上不少判断的语句。 但你想要麻烦么?


2007-3-30 15:06
查看资料  发短消息  网志   编辑帖子  回复  引用回复
bjsh
银牌会员





积分 2000
发帖 621
注册 2007-1-1
状态 离线
『第 14 楼』:  

flyinspace的作息时间怎么黑白颠倒啊????


2007-3-30 21:18
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
zzhh612
中级用户




积分 278
发帖 103
注册 2006-10-21
状态 离线
『第 15 楼』:  

flyinspace的代码在执行时仍会提示系统找不到文件. 所有子目录下的TXT文件一个也没有改. 不知你是怎样运行成功的.


2007-3-31 01:39
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: