中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请问我如何实现文件夹内的文件合并
作者:
标题: 请问我如何实现文件夹内的文件合并 上一主题 | 下一主题
flyingphf
中级用户





积分 392
发帖 142
注册 2007-6-10
状态 离线
『楼 主』:  请问我如何实现文件夹内的文件合并

比如说在文件夹内有1.txt,2.txt,3.txt如何将他们按顺序合并成一个txt文件,谢谢

2008-12-26 13:12
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
exzzz
初级用户

游手好闲 + 无所事事 ..



积分 194
发帖 167
注册 2007-4-30
状态 离线
『第 2 楼』:  

这个。。。放在批处理室不合适吧?

你在CMD下输入 copy /? 就会发现你想要的结果了。

2008-12-26 14:27
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 3 楼』:  Re 2楼

你觉得放在哪个版块比较合适呢?
楼主的要求是按顺序合并,当文件夹内文件数量、名称不定时,你准备如何解决?



2008-12-26 14:42
查看资料  发短消息 网志   编辑帖子  回复  引用回复
kissbill
初级用户





积分 61
发帖 35
注册 2008-10-4
状态 离线
『第 4 楼』:  

按哪种顺序合并.? 要是按数字递增的话比较容易吧.

2008-12-26 15:19
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
kurt101
初级用户





积分 23
发帖 17
注册 2008-8-22
状态 离线
『第 5 楼』:  

用软件很快的呀

2008-12-26 19:27
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 6 楼』:  Re 5楼

这里是批处理版,不是软件版。



2008-12-26 23:20
查看资料  发短消息 网志   编辑帖子  回复  引用回复
flyingphf
中级用户





积分 392
发帖 142
注册 2007-6-10
状态 离线
『第 7 楼』:  

是用批处理做啊

2008-12-27 13:28
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pkto
初级用户





积分 62
发帖 62
注册 2007-7-14
状态 离线
『第 8 楼』:  

嗯,是存在这个问题。因为如果文件里有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 ]

2008-12-27 13:57
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: