中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-13 20:44
楼 主 求教合并文件问题 发表于 2008-03-20 13:09 ·  中国 上海 广电网
新手上路
积分 14
发帖 6
注册 2008-03-20 12:38
UID 113474
性别 男
状态 离线
有下列一些文件
g123-1.plt
g123-2.plt
g123-3.plt
想把他们合并为
g123.hp


我用DOS命令中的COPY做了个BAT文件。

copy *.plt ????.hp
结果是分别拷贝成g123.hp,因此最终只是g123-3.plt一个文件被复制,其余两个都被覆盖掉。
如果 copy *.plt g123.hp就可以实现。

但实际中前4位不是定值,那么我的想法是先合并成一个文件在取原文件前4位给合并后的文件重命名,不知道能否实现。
2 发表于 2008-03-20 15:36 ·  中国 河北 保定 联通
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
UID 1565
性别 男
来自 河北保定
状态 离线
copy a+b+c d
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
3 发表于 2008-03-20 15:44 ·  中国 上海 广电网
新手上路
积分 14
发帖 6
注册 2008-03-20 12:38
UID 113474
性别 男
状态 离线
这种方法文件名都是知道的情况,我是要针对所有文件,合并后提取原前几位字段来命名新文件。
4 发表于 2008-03-20 15:45 ·  中国 上海 广电网
新手上路
积分 14
发帖 6
注册 2008-03-20 12:38
UID 113474
性别 男
状态 离线
应该用 echo来编吧? 我不会这种命令
5 发表于 2008-03-20 15:59 ·  中国 上海 上海乾万网络(QianWan_Network)有限公司(电信出口)
中级用户
★★
我是DOS学者
积分 367
发帖 180
注册 2006-05-14 10:53
UID 55507
性别 男
来自 重庆
状态 离线
copy没有这么强的功能吧...
6 发表于 2008-03-20 16:25 ·  中国 上海 广电网
新手上路
积分 14
发帖 6
注册 2008-03-20 12:38
UID 113474
性别 男
状态 离线
Originally posted by BWSkyer at 2008-3-20 03:59 PM:
copy没有这么强的功能吧...


copy 只能做到合并,就是以指定文件名输出,但无法以参数的方式命名
7 发表于 2008-03-20 16:45 ·  中国 河北 保定 联通
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
UID 1565
性别 男
来自 河北保定
状态 离线
配合上其它的命令也不是没有可能。
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
8 发表于 2008-03-20 17:18 ·  中国 重庆 联通
银牌会员
★★★
积分 2,165
发帖 730
注册 2004-04-21 00:00
UID 22966
性别 男
状态 离线

先做一个长度为0的文件 :g123.hp
然后:

for %i in (*.plt) do copy /b g123.hp+%i g123.hp /y
9 发表于 2008-03-20 17:27 ·  中国 上海 广电网
新手上路
积分 14
发帖 6
注册 2008-03-20 12:38
UID 113474
性别 男
状态 离线
Originally posted by bush at 2008-3-20 05:18 PM:

先做一个长度为0的文件 :g123.hp
然后:

for %i in (*.plt) do copy /b g123.hp+%i g123.hp /y


试了不行呀,再说这句里有G123了,我是要读PLT文件中前4为,比如文件是A534-1.PLT,输出就应该是A534.hp

不过谢谢了。
10 发表于 2008-03-20 19:35 ·  中国 北京 华为云
银牌会员
★★★
积分 1,436
发帖 739
注册 2007-10-11 17:44
UID 99469
性别 男
状态 离线

@echo off
setlocal enabledelayedexpansion
for %%i in (*.plt) do (
set fn=%%i
if not exist "!fn:~0,4!.hp" copy nul "!fn:~0,4!.hp">nul
copy "!fn:~0,4!.hp"+"%%i" "!fn:~0,4!.hp">nul
)
pause
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
termmy +1 2008-03-20 21:08
11 发表于 2008-03-20 20:13 ·  中国 上海 浦东新区 电信
新手上路
积分 14
发帖 6
注册 2008-03-20 12:38
UID 113474
性别 男
状态 离线
Originally posted by abcd at 2008-3-20 07:35 PM:

@echo off
setlocal enabledelayedexpansion
for %%i in (*.plt) do (
set fn=%%i
if not exist "!fn:~0,4!.hp" copy nul "!fn:~0,4!.hp">nul
copy "!fn:~0,4 ...


太感谢了,果然是高手!!!!!!!!
论坛跳转: