[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 求教一个用copy命令合并文件的批处理问题

本人电脑知识浅薄,只知道用copy /B a.flv+b.flv+c.flv…… +h.flv  1.flv的命令可以合并文件
但是最近碰到一个难题 我在优酷网下了一个经典剧集(霹雳游侠),其每一个文件都是分成好几个的(比如:霹雳游侠第二季20_1.flv 霹雳游侠第二季20_2.flv 霹……霹雳游侠第二季20_7.flv),给播放、管理、分享都带来了很大的不便,而我上网搜遍 也没有发现可以批量合并FLV的软件,所以求教各位,能否指导我,如何才能编出一个批处理文件,可以把当前目录下
一系列类似        霹雳游侠第二季20_1.flv~霹雳游侠第二季20_*.flv的文件    合并成类似霹雳游侠第二季20_.flv的文件

也就是说,一个批处理文件,可以遍历当前目录所有文件名在_之前一样,在_之后依数字排序的文件(类似A_1.flv到A_12.flv),并把他们合成一个文件(A.flv). 这种批处理文件该如何编,请赐教。

如能得到帮助,将不胜感激。而且我相信这也可以解决很多人的类似问题。。。

回复 5楼 的帖子

非常感谢您的帮助 这已经帮了我很大的忙了
能不能再提个非分的要求啊
这一系列的文件是 类似 霹雳游侠第一季02_6.flv 这种 不光_后有数字 前面也有
所以能不能把这个代码更进一步
变成可以处理一系列文件 例如 霹雳游侠第一季*(01~??)_*(1~??).flv 合并成 霹雳游侠第一季*(01~??).flv 呢?
无论如何 多谢 !也感谢pusofalse的帮忙 虽然我搞不太懂 我哪里出了错。。。(本人老菜鸟。。。)

TOP

回复 4楼 的帖子

这不是我的想法,只是你自己看着改得而已。
用5楼的代码吧。
心绪平和,眼藏静谧。

TOP

试试这个?
  1. @echo off
  2. set "str=霹雳游侠第一季02_"
  3. for %%a in (*.flv) do (set /a n+=1)
  4. for /l %%a in (1 1 %n%) do (
  5.    call set "var=%%var%%%str%%%a.flv+"
  6. )
  7. copy /b %var:~,-1% %str%.flv
复制代码

[ 本帖最后由 more 于 2008-8-22 14:04 编辑 ]

TOP

回复 2楼 的帖子

不好意思啊 但是貌似我这里使用出了点问题
我依您的代码 改成了

@echo off
for /l %%霹雳游侠第一季02 in (1 1 20) do (
       for /f "delims=" %%i in ('dir/b/od %%霹雳游侠第一季02_*.flv') do (
          call,set "file=%%file%%%%i+"
          call,set "files=%%files%%%%i;"
       )
       call,copy /b %%file:~,-1%% %%霹雳游侠第一季02.flv
       call,del %%files%%
       set "file="&set "files="
)
pause



把它命名为a.bat 并和霹雳游侠第一季02_*.flv(*=1到7),结果运行后显示如下:

找不到文件
系统找不到指定的文件。
命令语法不正确。找不到文件
系统找不到指定的文件。
命令语法不正确。
……(很多此重复)

不知是什么 恳请指教

[ 本帖最后由 wadjj 于 2008-8-22 13:40 编辑 ]

TOP

回复 2楼 的帖子

谢谢这位大虾的回复 待我先试用一下
回来报告使用情况

TOP

  1. @echo off
  2. for /l %%a in (1 1 20) do (
  3.        for /f "delims=" %%i in ('dir/b/od %%a_*.flv') do (
  4.           call,set "file=%%file%%%%i+"
  5.           call,set "files=%%files%%%%i;"
  6.        )
  7.        call,copy/b %%file:~,-1%% %%a.flv
  8.        call,del %%files%%
  9.        set "file="&set "files="
  10. )
  11. pause
复制代码
如果你的FLV文件是从20-40,就把第二行()中的1 1 20改为20 1 40
如果是以字母命名的,把第二行改为:
   for %%a in (a b c d e f g h i j k ...) do (

[ 本帖最后由 pusofalse 于 2008-8-22 05:32 编辑 ]
心绪平和,眼藏静谧。

TOP

返回列表