中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-07-17 22:36
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 批量将BAT格式文件转成TXT格式(请优化) 查看 3,582 回复 20
楼 主 批量将BAT格式文件转成TXT格式(请优化) 发表于 2008-05-16 19:41 ·  中国 江苏 南京 电信
初级用户
积分 24
发帖 11
注册 2008-02-01 13:30
18年会员
UID 109956
性别 男
状态 离线
将BAT格式文件批量转成TXT格式(批量改后缀)

功能:将当前目录下的BAT和CMD格式批处理文件,批量转换成TXT格式。
用途:适用于需要将批处理文件转换后放在手机上看TXT电子书,因为文件数量多了手动改比较麻烦,想到用P处理,这是代码:

@echo off
title bat2txt
echo 将当前目录下的BAT文件的后缀都改成TXT
for /f "delims=" %%i in ('dir/b/l/a-d^|findstr ".cmd$"^&dir/b/a-d^|findstr/i ".bat$"') do (
if not "%%~nxi"=="%~nx0" ren "%%~nxi" "%%~ni.txt",2>nul || echo 忽略了对“%%i”的操作,此目录下存在“%%~ni.txt”)
pause

上述代码不简洁,请各位给出更优的方案,尽量代码简洁而且人性化,最好能添加一个转换以后可以恢复成原状的功能,当然再如果有备份的功能更好,希望有高手可以添加一些个性化的功能比如加个进度条并显示进度并显示处理细节,使之更人性化,谢谢!因本人DOS很浅薄,解决小问题都感觉困难。谢谢了。

[ Last edited by Batain on 2008-5-17 at 02:25 PM ]
拙拙的跟各位学习学习,增长学问。
2 发表于 2008-05-16 19:52 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
ren *.cmd *.txt
ren *.bat *.txt
3 发表于 2008-05-16 19:55 ·  中国 重庆 南岸区 电信
初级用户
积分 45
发帖 19
注册 2007-03-08 02:14
19年会员
UID 81032
性别 男
状态 离线
ren *.bat *.txt
4 发表于 2008-05-16 19:55 ·  中国 重庆 南岸区 电信
初级用户
积分 45
发帖 19
注册 2007-03-08 02:14
19年会员
UID 81032
性别 男
状态 离线
被抢了……
5 发表于 2008-05-17 14:30 ·  中国 江苏 苏州 张家港市 电信
初级用户
积分 24
发帖 11
注册 2008-02-01 13:30
18年会员
UID 109956
性别 男
状态 离线
不好意思,我问题没说清楚,我的意思是需要解决bat2txt的更优化的代码,因为我发这个帖子不是为了仅实现转换,而是为了寻求一些更优化,个性的解决方案,第2,3楼朋友的方法不适用于写成批文件,因为会连自身的后缀都改掉,改不掉的文件还要说明一下原因,不然会造成误会。我希望你们给出功能透明,操作人性化的批文件代码,让大家学习学习。随便什么时候回复,我们都愿意等高手们的方案,但不要仓促地提供不完善的方法。谢谢。

[ Last edited by Batain on 2008-5-17 at 02:38 PM ]
拙拙的跟各位学习学习,增长学问。
6 发表于 2008-05-17 14:43 ·  中国 江苏 苏州 张家港市 电信
初级用户
积分 24
发帖 11
注册 2008-02-01 13:30
18年会员
UID 109956
性别 男
状态 离线
我看不懂四楼的朋友是什么意思,CN-DOS论坛不是罐水论坛,我们相信大家都会认真看每一个回贴的,并不是只看第一页的回贴,但愿你不要对大家怀有戒备之心。相信我们。你的回答精彩的话我们会收藏的,并且我们会记住你。毕竟这是我在此论坛贴的第一篇帖子,如果没有回帖的话我也很高兴,但是我讨厌看到不负责的回帖。

[ Last edited by Batain on 2008-5-17 at 02:45 PM ]
拙拙的跟各位学习学习,增长学问。
7 5楼 发表于 2008-05-17 14:46 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
不是别人的方法不完善,而是你的问题没有描述清楚。
@echo off
for /f "tokens=1* delims=" %%a in ('dir /b *.bat *.cmd') do (
if "%%a" neq "%0" (
ren %%a %%~na.txt
)
)
8 6楼 发表于 2008-05-17 14:49 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
4楼的朋友是说他想到的方法被2楼抢先一步贴出来了,没有其它意思,楼主不必介意。祝楼主在本论坛学习顺利。
9 发表于 2008-05-17 15:47 ·  中国 重庆 沙坪坝区 电信
中级用户
★★
金牌会员
积分 315
发帖 152
注册 2007-01-25 23:55
19年会员
UID 77669
性别 男
状态 离线
楼上的来自重庆?
我是沙平坝的``呵呵``
10 发表于 2008-05-17 16:02 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
干嘛放到同一目录……放到父目录
bat里加上路径就可以了
这样简单……

或者…直接注册新的类型…

[ Last edited by slore on 2008-5-17 at 04:08 PM ]
11 发表于 2008-05-18 12:34 ·  中国 江苏 苏州 张家港市 电信
初级用户
积分 24
发帖 11
注册 2008-02-01 13:30
18年会员
UID 109956
性别 男
状态 离线
谢谢你们的真诚!也谢谢7楼那位朋友的方法,同样是dir命令,你用得很简洁灵活,如果后缀名有好多种,可以很方便地添加。另外请问大家刷新文件夹的命令是什么?如果需要改后缀的文件成百上千之多,最好先改一部分再自动刷新一下文件夹然后再改,机器配置低的朋友就不会感觉卡了。。呵呵,谢谢你们!
拙拙的跟各位学习学习,增长学问。
12 发表于 2008-05-18 14:20 ·  中国 广西 百色 中移铁通
银牌会员
★★★
永远的菜鸟
积分 1,335
发帖 574
注册 2007-11-27 12:50
18年会员
UID 103929
性别 男
来自 广西
状态 离线
利用PING来暂停一下,每10个暂停几秒

@echo off
setlocal enabledelayedexpansion
for /f "tokens=1* delims=" %%a in ('dir /b *.bat *.cmd' do (
if "%%a" neq "%0" (
ren %%a %%~na.txt
set /a n+=1
if "!n:~-1!"=="0" ping -n 5 127.1>nul
)
)
13 发表于 2008-05-18 15:54 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
我一次性改过几千个文件,没发现卡,我觉得这样分批修改反而会影响执行效率。
14 发表于 2008-05-19 14:04 ·  中国 江苏 南京 电信
初级用户
积分 24
发帖 11
注册 2008-02-01 13:30
18年会员
UID 109956
性别 男
状态 离线
呵呵!谢谢你们,12楼的方法很好用,但是我不懂原理,我还不会变量扩展延时,有时间会慢慢去找资料看;还有我发现你们贴出的代码式样都很美观,缩进对齐得很有层次。是用的什么编辑器?还是手动空格或者TAB缩进的?
最近有点忙没时间放在学习上,上网也只是来论坛看一下回复,楼上几位四川重庆的朋友你们家里都平安吧?这次地震听说四川那边的豆腐渣房子太多,现在很多建筑商都会偷工减料的,真没办法。

[ Last edited by Batain on 2008-5-19 at 02:06 PM ]
拙拙的跟各位学习学习,增长学问。
15 发表于 2008-05-19 17:04 ·  中国 重庆 南岸区 电信
初级用户
积分 45
发帖 19
注册 2007-03-08 02:14
19年会员
UID 81032
性别 男
状态 离线
差点被楼主打击积极性了……
我再来一个


if "%1" equ "" exit
cd %1
ren *.cmd *.txt
ren *.bat *.txt


保存成批处理,然后把要批量改名的批处理所在文件夹拖放到这个批处理上,这样就解决自己也被改成txt的问题

注意,路径中不能包含有空格

感觉用for效率还是低了……所以还是直接ren好点

[ Last edited by gahoo on 2008-5-19 at 05:17 PM ]
论坛跳转: