![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-11 05:05 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [已结]遍历文件夹且将结果按顺序合并重命名输出文本 |
| 可打印版本 1,583 / 4 |
| 第1楼 pkto | 发表于 2009-01-15 17:04 |
| 初级用户 发帖 62 积分 62 | |
|
[已结]遍历文件夹且将结果按顺序合并重命名输出文本 如题:如何遍历文件夹,并且将遍历结果按顺序合并文件?
偶是个网文爱好者,经常将一些小说什么的下载,然后合并处理,最后放在电纸书或者手机上阅读,现就文本合并问题提以下要求,请达人帮助解决: ================================ 1、下载的文件有各种格式,有php txt htm asp等,按各自小说名下载至小说名的文件夹下。如:《星际浪子》、《寻秦记》等,通通默认在“E:\黄易\”这个总文件夹内。要求:下载完后,遍历“黄易”这个文件夹,将所有不同扩展名的文件,全部更改为.txt为扩展名的文本文件; 这个可用如下批处理解决: ================================ 2、遍历“黄易”总文件夹,将所有文本文件合并,合并要求: 按1.txt,2.txt,3.txt,4.txt……10.txt,11.txt……20.txt……100.txt……如此顺序。(一般简单的bat合并顺序是1.txt,10.txt,2.txt,20.txt的顺序,这不符合要求); 排序代码(是借鉴youxi01大大的): ================================ 3、将合并成的文件,自动命名为文件夹名称,如:《星际浪子》文件夹的的文本文件合并后,自动命名为:《星际浪子》.txt,并且自动move到“黄易”这个总文件夹根目录下。 提供一下自动命名(假设合并后的文本文件为a.txt)并转移代码: ================================ 以上需求要在一个批处理中(cmd环境下)解决,请各位版主、钻石、铂金、高人予以帮助! [ Last edited by HAT on 2009-1-16 at 01:04 ] |
|
| 第2楼 HAT | 发表于 2009-01-15 22:00 |
| 版主 发帖 5,017 积分 9,023 | |
请各位版主、钻石、铂金、高人予以帮助! 除了这些人,不接受其他人的帮助? |
|
| 第3楼 netbenton | 发表于 2009-01-15 23:54 |
| 银牌会员 发帖 752 积分 1,916 来自 广西 | |
|
我可是新手 @echo off&setlocal enabledelayedexpansion
::本批处理可指定目录A下的所有子目录的文件,以最小目录为单位,合并到以最小目录为文件名的.txt文件 ::放到批定的目录A内 if '%1'=='' echo 请把要处理的总目录拖到本批处理上!&echo 或在命令行指明总目录!&pause&exit set sourcd=%cd% pushd %1 set cdname=%cd% echo. for /f "tokens=* delims=" %%a in ('dir /ad /s /b') do ( echo. setlocal enabledelayedexpansion set cucd=%%a set cucd=!cucd:\= ! for %%d in (!cucd!) do set cucd=%%d pushd "%%a" echo 正在处理 %%a 目录。。。。。。 for /f "tokens=* delims=" %%i in ('dir /b') do ( set na=1111111111111111111111111111112%%i set na=!na:~-30! set _!na!=a ) if exist %cdname%\!cucd!.txt (set /p in=!cucd!.txt已存在,按"0"回车跳过,其它忽略) if not !in!=="0" (if not "!na!"=="" cd. >%cdname%\!cucd!.txt) for /f "tokens=* delims=" %%l in ('set _') do ( set fn=%%l set fn=!fn:*2=! set fn=!fn:~0,-2! if not "!in!"=="0" type "!fn!" >>%cdname%\!cucd!.txt ) if exist %cdname%\!cucd!.txt (echo 文件已经合并到%cdname%\!cucd!.txt) else (echo %%a 目录为空) echo. popd endlocal ) pushd %sourcd% cd pause [ Last edited by netbenton on 2009-1-16 at 22:34 ] |
|
| 第4楼 pkto | 发表于 2009-01-16 00:19 |
| 初级用户 发帖 62 积分 62 | |
除了这些人,不接受其他人的帮助? 呵呵,hat老大,高人,就是指的其他人了啦 |
|
| 第5楼 pkto | 发表于 2009-01-16 00:54 |
| 初级用户 发帖 62 积分 62 | |
|
非常感谢netbenton兄,代码经验证,完全可行!而且很精练!兄台是高人哪!
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |