Board logo

标题: [文件操作] 批处理将多个文件内容合并为一个文件,内存不够? [打印本页]

作者: lengkubinghan    时间: 2009-11-9 14:44     标题: 批处理将多个文件内容合并为一个文件,内存不够?

我想做如下操作:将多个.sql文件的内容读入一个目标文件中,当很多文件时自动终止(这是目标文件大概有6M),不知为什么,我的代码如下:
  1. set _CurrPath=.
  2. set _HuanHang=\n
  3. for %%i in (a\*.sql;b\*.sql;c\*.sql) do (
  4. type %%i >> %_CurrPath%\a.log c.sql >> %_CurrPath%\a.log)
复制代码
其中c.sql中只有一个空行,小弟不知道怎样直接向一个文件中写入换行符,就只能每次读入c.sql,效率低下,还希望各位大侠不吝赐教!
主要是第一个问题,小弟十万火急啊~~~
作者: Seter    时间: 2009-11-9 16:06

换行echo.>...就可以了
你的BAT中type %%i >> %_CurrPath%\a.log c.sql >> %_CurrPath%\a.log我看不懂...所以帮不了你啦
作者: dailisishen    时间: 2009-11-9 16:22

直接写入换行为
  1. echo.>temp.txt
复制代码
这个应该可以吧
作者: vsbat    时间: 2009-11-9 20:33

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set _CurrPath=.
  4. set /a b=6*1024*1024
  5. for  %%i in (a\*.sql;b\*.sql;c\*.sql) do set /a n=!n!+%%~zi
  6. if !n! gtr %b% (echo 内存不足
  7. ) else (
  8. for  %%i in (a\*.sql;b\*.sql;c\*.sql) do type %%i>>%_CurrPath%\a.log&echo.>>%_CurrPath%\a.log)
  9. pause>nul
复制代码
这个行不??
%%~zi 扩充到文件大小

[ 本帖最后由 vsbat 于 2009-11-9 20:35 编辑 ]
作者: vsbat    时间: 2009-11-9 20:37

原帖由 Seter 于 2009-11-9 16:06 发表
换行echo.>...就可以了
你的BAT中type %%i >> %_CurrPath%\a.log c.sql >> %_CurrPath%\a.log我看不懂...所以帮不了你啦




意思就是 type    %%i >> %_CurrPath%\a.log
                type    c.sql >> %_CurrPath%\a.log
作者: netbenton    时间: 2009-11-9 21:10

  1. set/a size=1024*1024*6
  2. set _CurrPath=.
  3. set _HuanHang=\n
  4. for %%k in ("%_CurrPath%\a.log") do (
  5.     for %%i in (a\*.sql;b\*.sql;c\*.sql) do (
  6.         type %%i >> %_CurrPath%\a.log
  7.         echo;>>%_CurrPath%\a.log
  8.         if %%~zk gtr %size% goto :end
  9.     )
  10. )
  11. :end
  12. pause
复制代码

作者: zljzsmzzx    时间: 2009-11-10 09:02

用copy/b file1+file2+file3 newfile不是更好吗?
作者: vsbat    时间: 2009-11-10 14:35

原帖由 zljzsmzzx 于 2009-11-10 09:02 发表
用copy/b file1+file2+file3 newfile不是更好吗?



copy /b 的 话可以一起把几个文件合成一个文件-------
不过 缺点 是跟楼主的要求 一样----内容无分隔,即缺少 回车------




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2