中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-05 07:59
48,038 主题排行 / 350,123 发帖 / 今日 0 篇 / 48,251 会员排行
DOS批处理 & 脚本技术(批处理室) » 超长行文本如何使用替换
可打印版本  936 / 4
第1楼 bd123456789 发表于 2007-07-06 10:22
中级用户 发帖 216 积分 360
超长行文本如何使用替换
我有一个文本文件,在附件中
其中一行是超长文本

我编写了如下代码:
目的想将文本中的所有空格替换成*号

setlocal enabledelayedexpansion
for /f "tokens=*" %%i in (123.txt) do (
set var=%%i
set "var=!var: =*!"
echo !var!>>456.txt
)

我在其它一些小的文本中,能够顺利通过
但123文本中发现,原文件大小120多KB
导出的文本却只有15KB?
说明有部分文本没有被读取,或者说被丢掉??有什么好的解决办法吗?

附件
123.rar (22.79 KiB)
第2楼 lxmxn 发表于 2007-07-06 11:22
版主 发帖 4,938 积分 11,386
第3楼 bd123456789 发表于 2007-07-06 17:31
中级用户 发帖 216 积分 360
不知道是什么原因造成的
你的回答也是一种解决办法,但我想要在CMD下实现
另外,真没有其它办法了吗???
第4楼 lxmxn 发表于 2007-07-07 15:58
版主 发帖 4,938 积分 11,386
用cmd自带的命令解决很困难,因为cmd对命令行的长度有限制,一般是2048个字符(如果没记错的话),所以你的文本超过了这个数目就会不处理或者出错。

另外,为何不用sed或者awk呢?
第5楼 bd123456789 发表于 2007-07-08 11:47
中级用户 发帖 216 积分 360
Originally posted by lxmxn at 2007-7-7 03:58 PM:
用cmd自带的命令解决很困难,因为cmd对命令行的长度有限制,一般是2048个字符(如果没记错的话),所以你的文本超过了这个数目就会不处理或者出错。

另外,为何不用sed或者awk呢?


多谢多谢
我测试了一下
当文件大小在10K左历,能够正常替换,说明CMD对命令行长度限制不是2048,而是在10000多个字节!!
不知道为什么微软对此不作介绍,或者说明
呵呵
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023