中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-14 08:18
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何为多个子目录中的txt批量改文件扩展名.
楼 主 如何为多个子目录中的txt批量改文件扩展名. 发表于 2007-03-30 13:04 ·  中国 四川 遂宁 电信
中级用户
★★
积分 278
发帖 103
注册 2006-10-21 21:08
UID 67562
性别 男
状态 离线
在一个目录下的若干个子目录中有许多以文本方式保存的C代码.
我怎样才能用一个批处理将这些以TXT为扩展名的代码文档变成以.C为扩展名的C源文件.

[ Last edited by zzhh612 on 2007-3-31 at 01:48 AM ]
2 发表于 2007-03-30 13:14 ·  中国 广东 广州 海珠区 电信
银牌会员
★★★
积分 1,206
发帖 517
注册 2007-03-25 01:18
UID 82819
性别 男
状态 离线
哦。很简单啊。。
3 发表于 2007-03-30 13:16 ·  中国 广东 广州 海珠区 电信
银牌会员
★★★
积分 1,206
发帖 517
注册 2007-03-25 01:18
UID 82819
性别 男
状态 离线
@echo off
dir /b /a *.txt>1.txt
for /f "tokens=1,2 delims=. " %%i in (1.txt) do ren %%i.txt %%i.c
4 发表于 2007-03-30 13:31 ·  中国 广东 深圳 电信
新手上路
积分 4
发帖 2
注册 2007-03-30 13:04
UID 83403
性别 男
状态 离线
在XP下面,用命令ren *.txt *.c就可以把当前目录下所有.txt文件重命名为.c文件啦
初来乍到,看到这里很多高手,很多复杂的语法还不懂,像这个应该没有必要用复杂的方法吧
5 发表于 2007-03-30 13:32 ·  中国 广东 广州 海珠区 电信
银牌会员
★★★
积分 1,206
发帖 517
注册 2007-03-25 01:18
UID 82819
性别 男
状态 离线
呵呵,头脑发昏了。
6 发表于 2007-03-30 13:43 ·  中国 四川 遂宁 电信
中级用户
★★
积分 278
发帖 103
注册 2006-10-21 21:08
UID 67562
性别 男
状态 离线
不知flyinspace

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

我想用批处理解决的原因是文本存在于多个不同级数的子目录下,单用命令REN来做很是麻烦的,当然WINDOWS下有批量改名的软件,我是想在实践中学一学批处理.不能总只靠一种方法来解决问题吧.

[ Last edited by zzhh612 on 2007-3-30 at 01:51 PM ]
7 发表于 2007-03-30 14:00 ·  中国 广东 深圳 电信
新手上路
积分 4
发帖 2
注册 2007-03-30 13:04
UID 83403
性别 男
状态 离线
有理
8 发表于 2007-03-30 14:08 ·  中国 广东 广州 海珠区 电信
银牌会员
★★★
积分 1,206
发帖 517
注册 2007-03-25 01:18
UID 82819
性别 男
状态 离线
呵,都说过了呀。
没有注意的。。。

忘记加几个参数了。
还有那个名字可以随便写的。
不一定是.txt
随便写个。fly也行啊。
9 发表于 2007-03-30 14:10 ·  中国 广东 广州 海珠区 电信
银牌会员
★★★
积分 1,206
发帖 517
注册 2007-03-25 01:18
UID 82819
性别 男
状态 离线
试过了没有.目录列表应用dir /b /s才对.这样可以把文件名写入1.txt,但在执行重命名文件时,会提示找不到文件的路径.兄弟的代码怕是需要改进吧.也许思路是对的.

??
不是吧?
这个dir /b /s是可以随便写的。。
写dir /s /b都一样。。
10 发表于 2007-03-30 14:13 ·  中国 广东 广州 海珠区 电信
银牌会员
★★★
积分 1,206
发帖 517
注册 2007-03-25 01:18
UID 82819
性别 男
状态 离线
噢。开始你的要求里面没有子目录的。
就没有加上 /s参数。
11 发表于 2007-03-30 14:15 ·  中国 广东 广州 海珠区 电信
银牌会员
★★★
积分 1,206
发帖 517
注册 2007-03-25 01:18
UID 82819
性别 男
状态 离线
@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参数是为了防止有隐藏文件的出现。
12 发表于 2007-03-30 14:48 ·  中国 四川 遂宁 电信
中级用户
★★
积分 278
发帖 103
注册 2006-10-21 21:08
UID 67562
性别 男
状态 离线
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 ]
13 发表于 2007-03-30 15:06 ·  中国 广东 广州 海珠区 电信
银牌会员
★★★
积分 1,206
发帖 517
注册 2007-03-25 01:18
UID 82819
性别 男
状态 离线
哦。我自己试过了啊?
所有的目录下的文件都可以更改?

要想最规范的话。还要加上不少判断的语句。

但你想要麻烦么?
14 发表于 2007-03-30 21:18 ·  中国 浙江 杭州 华数宽带
银牌会员
★★★
积分 2,000
发帖 621
注册 2007-01-01 00:00
UID 75212
性别 男
状态 离线
flyinspace的作息时间怎么黑白颠倒啊????
15 发表于 2007-03-31 01:39 ·  中国 四川 遂宁 电信
中级用户
★★
积分 278
发帖 103
注册 2006-10-21 21:08
UID 67562
性别 男
状态 离线
flyinspace的代码在执行时仍会提示系统找不到文件.
所有子目录下的TXT文件一个也没有改.

不知你是怎样运行成功的.
论坛跳转: