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

[文本处理] 如何用批处理合并多个文本文件

合并*.txt文件时,将这些文件都追加到origin.txt中(origin.txt之前为空),但我这段代码有个问题,就是把已经生成的正确的origin.txt又追加到origin.txt一次,如何修改代码解决这个问题呢?

if exist d:\test1\tmp\origin.txt. (del d:\test1\tmp\origin.txt.)
for /r d:\test1\tmp\ %%i in (*.txt) do (
type %%i >>d:\test1\tmp\origin.txt
@echo merging with %%i
)

type %%i >>d:\test1\tmp\origin.txt
这里把origin.txt保存在非tmp目录下看看!

TOP

加一个是否为origin.txt的判断...

TOP

这样不行吗?
  1. copy /a "d:\test1\tmp\*.txt" "d:\test1\tmp\origin.txt"
复制代码

TOP

楼上的估计不行....
  1. if exist d:\test1\tmp\origin.txt. (del d:\test1\tmp\origin.txt.)
  2. for /r d:\test1\tmp\ %%i in (*.txt) do (
  3. if "%%i" neq "d:\test1\tmp\origin.txt" (
  4. type %%i >>d:\test1\tmp\origin.txt
  5. @echo merging with %%i
  6. )
  7. )
复制代码
没试过...感觉应该可以..思路和3楼的MORE大大说的一样!

TOP

直接用copy合并不行吗?

循环过程中有新文件生成时,for 直接遍历文件有bug,最好用for /f 解析 dir 的输出。
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

原帖由 Seter 于 2009-8-24 18:50 发表
楼上的估计不行....if exist d:\test1\tmp\origin.txt. (del d:\test1\tmp\origin.txt.)
for /r d:\test1\tmp\ %%i in (*.txt) do (
if "%%i" neq "d:\test1\tmp\origin.txt" (
type %%i >>d:\test1\tmp\origin.t ...

COPY 为什么不行呢?
如要每个文件都IF 还真不如 for /f 里面 dir 出来

TOP

回复 1楼 的帖子

that is because you created origin.txt in the directory where your code is searching for all txt files.  Try substitute the following lines for your code.
  1. if exist d:\test1\tmp\origin.txt. (del d:\test1\tmp\origin.txt.)
  2. for /r d:\test1\tmp\ %%i in (*.txt) do (
  3. type %%i >>d:\origin.txt
  4. @echo merging with %%i
  5. )
复制代码
Still with wax

TOP

我觉得用COPY可以呀,
还有种没试过
  1. @echo off
  2. for /f %%i in (1.txt) do set a=%%i
  3. echo %a%>origin.txt
  4. for /f %%l in (2.txt) do set b=%%l
  5. echo %b%>>origin.txt
  6. for /f %%m in (3.txt) do set c=%%m
  7. echo %c%>>origin.txt
复制代码

TOP

试了下
好象不可以
再让人改改
看看可不可以

TOP

用2楼的方法将origin换了一个保存目录,就不会重复加了。也许要比在同一个目录下加判断条件简单。

TOP

返回列表