中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-11 02:34
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
DOS批处理 & 脚本技术(批处理室) » 请问我如何实现文件夹内的文件合并
可打印版本  1,239 / 7
第1楼 flyingphf 发表于 2008-12-26 13:12
中级用户 发帖 142 积分 392
请问我如何实现文件夹内的文件合并
比如说在文件夹内有1.txt,2.txt,3.txt如何将他们按顺序合并成一个txt文件,谢谢
第2楼 exzzz 发表于 2008-12-26 14:27
初级用户 发帖 167 积分 194
这个。。。放在批处理室不合适吧?

你在CMD下输入 copy /? 就会发现你想要的结果了。
第3楼 HAT 发表于 2008-12-26 14:42
版主 发帖 5,017 积分 9,023
Re 2楼
你觉得放在哪个版块比较合适呢?
楼主的要求是按顺序合并,当文件夹内文件数量、名称不定时,你准备如何解决?
第4楼 kissbill 发表于 2008-12-26 15:19
初级用户 发帖 35 积分 61
按哪种顺序合并.? 要是按数字递增的话比较容易吧.
第5楼 kurt101 发表于 2008-12-26 19:27
初级用户 发帖 17 积分 23
用软件很快的呀
第6楼 HAT 发表于 2008-12-26 23:20
版主 发帖 5,017 积分 9,023
Re 5楼
这里是批处理版,不是软件版。
第7楼 flyingphf 发表于 2008-12-27 13:28
中级用户 发帖 142 积分 392
是用批处理做啊
第8楼 pkto 发表于 2008-12-27 13:57
初级用户 发帖 62 积分 62
嗯,是存在这个问题。因为如果文件里有11.txt,21.txt等的话,最后排列加的顺序会是1.txt+11.txt+2.txt+22.txt......,这个问题偶也在学习之中,但还没结果。应该用for遍历,然后sort的方法解决吧……强烈期待hat版主大大人出手!

偶的设想是,如果类似的文件夹有N多(很明显,楼主是批量下载网文产生的文件夹),所以首先遍历的方法,建立各自文件夹的dir /b>目录列表。然后通过sort来读取目录列表内容,并对内容的序列进行顺序排列,并将结果导出到一个新的txt中。最后通过读取新的txt序列,执行copy +的命令,达到楼主的要求……

不知道思路对不对……感觉好复杂的说,无从入手……

如果能把youxi01大大的代码结果导出到文本,偶就能提出整个解决过程啦!代码如下:

@echo off
setlocal enabledelayedexpansion

if "%2"=="" (
for /f "tokens=2 delims=#" %%i in ('"%~0" %1 OK^|sort') do echo %%i
) else (
for /f %%i in (%1) do (
call :CheckNum %%i Res
echo !Res!#%%i)
goto :eof)

pause>nul

:CheckNum num Res
set/a Res=0
for /l %%i in (0 1 1000) do (
set "var=%~1"
set tmp=!var:~%%i,1!
if "!tmp!"=="" goto :eof
set/a Res+=1)

[ Last edited by pkto on 2008-12-27 at 14:04 ]
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023