Board logo

标题: 求教合并文件问题 [打印本页]

作者: termmy     时间: 2008-3-20 13:09    标题: 求教合并文件问题

有下列一些文件
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位给合并后的文件重命名,不知道能否实现。
作者: Climbing     时间: 2008-3-20 15:36
copy a+b+c d
作者: termmy     时间: 2008-3-20 15:44
这种方法文件名都是知道的情况,我是要针对所有文件,合并后提取原前几位字段来命名新文件。
作者: termmy     时间: 2008-3-20 15:45
应该用 echo来编吧? 我不会这种命令
作者: BWSkyer     时间: 2008-3-20 15:59
copy没有这么强的功能吧...
作者: termmy     时间: 2008-3-20 16:25


  Quote:
Originally posted by BWSkyer at 2008-3-20 03:59 PM:
copy没有这么强的功能吧...

copy 只能做到合并,就是以指定文件名输出,但无法以参数的方式命名
作者: Climbing     时间: 2008-3-20 16:45
配合上其它的命令也不是没有可能。
作者: bush     时间: 2008-3-20 17:18

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

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

作者: termmy     时间: 2008-3-20 17:27


  Quote:
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

不过谢谢了。
作者: abcd     时间: 2008-3-20 19:35

@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

作者: termmy     时间: 2008-3-20 20:13


  Quote:
Originally posted by abcd at 2008-3-20 07:35 PM:
[code]
@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 ...

太感谢了,果然是高手!!!!!!!!