中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何为多个子目录中的txt批量改文件扩展名.
« [1] [2] »
作者:
标题: 如何为多个子目录中的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
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: