Board logo

标题: [文本处理] 【已结】怎么用批处理批量转存txt文件? [打印本页]

作者: kingerpk    时间: 2009-2-1 00:47     标题: 【已结】怎么用批处理批量转存txt文件?

我从网上下载了很多txt格式的电子书。但其编码不是2进制的。在我的手机看到的全是乱码,但在电脑上把其内容存倒另一个txt中就可解决这个问题(应该是很傻的办法)。或许有其他办法,但我想用批处理来做我刚才所描述的过程,要怎么做呢?
顺便看看我的菜鸟代码有什么问题:(我的文件是放在h:\123中)
  1. h:
  2. dir h:\123> h:\1.txt
  3. setlocal EnableDelayedExpansion
  4. for /r . %%A in (h:\123) do for /f "skip=7 tokens=4 delims= " %%a in (1.txt) do echo %%a > h:\2.txt & for /f %%B in (2.txt) do set p=%%B & type %p%*.txt > e:\%p%.txt
  5. ::把文件名从1.txt中提取出来(可能会不完整) 放到2.txt中  再把2.txt中的每行(即文件名)赋给p  再把%p%*.txt  type  进%p%.txt中(考虑到文件名提取得不完整,所以用*)
  6. pause
复制代码
但运行结果~~~~~~~~~
我刚接触批处理几天相当的不懂
还望各位指点指点。

[ 本帖最后由 kingerpk 于 2009-2-1 01:02 编辑 ]
作者: terse    时间: 2009-2-1 01:57

你直接 TYPE 行不呢?
作者: kingerpk    时间: 2009-2-1 12:56     标题: 回复 2楼 的帖子

但我要其文件名也不变啊!!!!!!!!!!
具体要怎么做啊!!!!!!!!!!!
帮帮我啊!!!!!!!
作者: wxcute    时间: 2009-2-1 13:29

for /f "delims=" %%i in ('dir/b/s h:\123\*.txt') do type "%%i">"e:\%%~nxi"
作者: kingerpk    时间: 2009-2-1 13:39

原帖由 wxcute 于 2009-2-1 13:29 发表
for /f "delims=" %%i in ('dir/b/s h:\123\*.txt') do type "%%i">"e:\%%~nxi"

万分感谢!!!!!
可否解释('dir/b/s h:\123\*.txt')是什么意思
"%%i">"e:\%%~nxi"呢?
作者: defanive    时间: 2009-2-1 13:41

楼上的代码,还是吧type "%%i"拓展成type "%%~i"好点吧,防止多重引号。。。
作者: wxcute    时间: 2009-2-1 13:51     标题: 回复 6楼 的帖子

dir 列文件名时不会出现引号,因为文件名是禁止用引号的。

回 5 楼
dir/b/s h:\123\*.txt,列出目录 h:\123 下所有文本文档。
参阅 FOR /F 参数帮助,单引号表示将命令结果传送给 FOR 处理。

"%%i">"e:\%%~nxi",参阅 FOR 命令帮助中变量扩展部分。
作者: kingerpk    时间: 2009-2-1 20:57     标题: 回复 7楼 的帖子

明白了!!!谢谢!!!!




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