Board logo

标题: [文本处理] 批处理命令type 追加内容到另一个文件,不显示中文 [打印本页]

作者: flyegg    时间: 2015-12-6 23:37     标题: 批处理命令type 追加内容到另一个文件,不显示中文

有个文件1.txt,内容:c:\tmp\111.txt

c:\tmp\111.txt文件内容:
你好
123

bat文件内容:
for /f %%i in (1.txt) do type %%i >> 3.txt

为什么111.txt中的中文内容不追加到3.txt文件中呢?只是追加个空行。
作者: pcl_test    时间: 2015-12-6 23:49

测试正常,不是中文可以么?两行都是中文呢?
作者: flyegg    时间: 2015-12-6 23:52

本帖最后由 flyegg 于 2015-12-6 23:59 编辑

非中文的行都追加进去了,中文行只是空行。直接在cmd窗口运行type 111.txt > 333.txt 就可以正常将中文追加进去。
111.txt文件编码是ansi
作者: flyegg    时间: 2015-12-7 00:01

中文内容都进不去,比如:111你好222,追加成111222
作者: terse    时间: 2015-12-7 00:13

type 文件名 楼主一楼的%%i 是文件名吗
作者: flyegg    时间: 2015-12-7 00:15

是的想将一些文件合成一个文件,这些文件在不同的目录中。
作者: pcl_test    时间: 2015-12-7 01:03

本帖最后由 pcl_test 于 2015-12-7 01:04 编辑

后面不加输出到TXT,能正常显示吗?合并可用copy
作者: flyegg    时间: 2015-12-7 01:06

本帖最后由 flyegg 于 2015-12-7 01:10 编辑

不行,这个是在家的机子上,xp系统。
在不同的目录中的多个文件用copy怎么合并啊?谢谢。
作者: pcl_test    时间: 2015-12-7 01:12

真的怀疑你的系统了
作者: flyegg    时间: 2015-12-7 01:24

我又试了一下,在桌面下,看3.txt不显示中文。在cmd下type文件3.txt显示中文。

但第一个字符前面多了个乱码。
这是我系统的问题?
作者: CrLf    时间: 2015-12-7 04:10

utf-8,鉴定完毕,而且是有两个文件头连在一起,也就是
EF BB BF EF BB BF 7B 31....
作者: flyegg    时间: 2015-12-7 07:26

我另存为ansi也不行,要单独转一下码、另存不行?
作者: pcl_test    时间: 2015-12-7 08:28

回复 12# flyegg


    上传一份你的问题txt
作者: flyegg    时间: 2015-12-7 14:45     标题: 文件名中带空格,怎么传到%%i中

我想将222.txt里的文件列表中的文件合并到一个文件里,(这些文件名中带空格)用:
for /f %%i in (222.txt) do type "%%i" >> 333.txt
怎么报找不到指定的文件?

或者给我个解决合并的方法吧,222.txt 文件列表中有好多在不同目录的文件。
谢谢。
作者: DAIC    时间: 2015-12-7 17:18

回复 14# flyegg
  1. @echo off
  2. (for /f "delims=" %%i in ('type "222.txt"') do (
  3.     type "%%i"
  4. ))>>333.txt
复制代码

作者: terse    时间: 2015-12-7 17:19

  1. @echo off
  2. for /f "tokens=*" %%i in (222.txt) do set cp=!cp!+"%%i"
  3. copy /b !cp:~1! 333.txt
复制代码

作者: flyegg    时间: 2015-12-7 18:16

回复  flyegg
DAIC 发表于 2015-12-7 17:18

这个只有第一个文件写入333.txt了。然后就报找不到指定的文件了,后面的文件肯定有。

terse 发表于 2015-12-7 17:19

这个直接报找不到指定的文件,没写入333.txt。
作者: CrLf    时间: 2015-12-7 18:35

本帖最后由 CrLf 于 2015-12-7 19:39 编辑

你的所有文件都是带 utf-8 文件头的,用 >> 合并到同一个文件时就把文件头叠一块了
  1. <!-- :
  2. @mshta "%~f0"
  3. pause
  4. -->
  5. <script src="http://bathome.net/lib/diy/Libs.js"></script>
  6. <script>
  7. Libs.append('hide')
  8. Libs.append('WSH')
  9. Libs.append('Function')
  10. Libs.append('Prototype')
  11. Libs.append('DIYprototype')
  12. Libs.append('iconv')
  13. </script>
  14. <script>
  15. var filelist = type("1.txt").split(/\r?\n/).files()
  16. var output = filelist._EACH(type).join('\r\n')
  17. iconv.saveText(output,'3.txt','utf-8')
  18. </script>
复制代码

作者: DAIC    时间: 2015-12-7 18:37

回复 17# flyegg


把以下文件打包压缩传上来我试试:
111.bat
222.txt
222.txt里面包含的其它txt
作者: flyegg    时间: 2015-12-7 18:51

回复  flyegg


把以下文件打包压缩传上来我试试:
111.bat
222.txt
222.txt里面包含的其它txt
DAIC 发表于 2015-12-7 18:37


谢谢,成功了,其中一个文件是被删了,我的文件是UTF-8的,合并的各文件间没有回车我看成全是第一个文件了。
作者: flyegg    时间: 2015-12-7 20:46

这是第一个问题的附件。
作者: DAIC    时间: 2015-12-7 21:20

回复 20# flyegg


    BAT不适合直接处理UTF-8文件
作者: flyegg    时间: 2015-12-7 22:18

本帖最后由 flyegg 于 2015-12-7 22:34 编辑

处理之前先转一下码?用什么程序转呢?




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