中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [讨论]最大限度原样输出含特殊字符的指定行内容
« [1] [2] [3] »
作者:
标题: [讨论]最大限度原样输出含特殊字符的指定行内容 上一主题 | 下一主题
dikex
高级用户

潜水修练批处理



积分 788
发帖 366
注册 2006-12-31
状态 离线
『第 16 楼』:  

这个可否??紧限于输出

type test.txt>output.txt



正在潜水修练的批处理小白
2007-5-18 14:13
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bjsh
银牌会员





积分 2000
发帖 621
注册 2007-1-1
状态 离线
『第 17 楼』:  

?
namejm上面的帖子针对的是哪个帖子说的?

我觉得当引号个数为奇数是就会把 echo后所有的东西全部输出;
因此无法重定向;
我认为解决方法为给每个引号加转义;

对于偶数;觉得不会出错

2007-5-18 14:18
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 18 楼』:  

  呵呵,我使用的代码不是你的版本,说法出错了,我收回这个说法。



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2007-5-18 14:23
查看资料  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 19 楼』:  

  不知不觉中,bjsh已经把所有的特殊字符的输出问题都解决完了,剩下的事情就是效率的提升和代码的精简/规范问题了。



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2007-5-18 14:27
查看资料  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 20 楼』:  



  Quote:
Originally posted by dikex at 2007-5-18 14:13:
这个可否??紧限于输出

type test.txt>output.txt

  type方案仅限于整个文本的输出,而我想讨论的是对指定行内容里的所有特殊字符的原样输出,我的标题有点误导人了,这就改改。



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2007-5-18 14:29
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bjsh
银牌会员





积分 2000
发帖 621
注册 2007-1-1
状态 离线
『第 21 楼』:  

重定向到文本中的代码
@echo off
if exist tmp.txt del tmp.txt
set var=
for /f "delims=" %%a in ('findstr /n .* test.txt') do (
set "var=%%a"
call set "var=%%var:"=%%"
call :change
)
goto :eof
:change
set "var=%var:^=^^%"
set "var=%var:>=^>%"
set "var=%var:<=^<%"
set "var=%var:&=^&%"
set "var=%var:|=^|%"
set "var=%var:*:=%"
if not defined var echo.>>tmp.txt & goto :eof
call set "var=%%var:="%%"
call echo.%%var%%>>tmp.txt
注释:
call set "var=%%var:"=%%"
中的:"=%%"里的"空格"不是空格是ctrl+BackSpace的特殊字符;

[ Last edited by bjsh on 2007-5-18 at 02:47 PM ]

2007-5-18 14:44
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 22 楼』:  

我记得关于这个在无奈何签名的那个帖子中已经有一个很好的方案了吧!

2007-5-22 21:00
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
bjsh
银牌会员





积分 2000
发帖 621
注册 2007-1-1
状态 离线
『第 23 楼』:  

最新代码:
简练且效率高
@echo off
for /f "delims=" %%a in ('findstr /n .* test.txt') do (
        set "var=%%a"
        setlocal enabledelayedexpansion
        set var=!var:*:=!
        echo.!var!
        endlocal
)
有兴趣的帮忙测试

   此帖被 +7 点积分      点击查看详情   
评分人:【 vkill 分数: +6  时间:2007-5-24 13:50
评分人:【 cutebe 分数: +1  时间:2009-10-17 13:38


2007-5-23 15:56
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 24 楼』:  

  这可能是最简洁高效的代码了,变量延迟大有文章可作啊。



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2007-5-23 22:41
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bjsh
银牌会员





积分 2000
发帖 621
注册 2007-1-1
状态 离线
『第 25 楼』:  

简析环境变量和变量延迟特殊字符以及中介法的微妙关系

是写上面代码的后感..

[ Last edited by bjsh on 2007-11-14 at 12:11 AM ]

2007-5-23 22:56
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zjl5
初级用户





积分 82
发帖 15
注册 2007-5-26
状态 离线
『第 26 楼』:  

不知道效果怎么样..
@echo off
for /f "eol= delims=" %%i in (a.txt) do (
set type=%%i
for /l %%j in (0,1,100) do (
setlocal EnableDelayedExpansion
if "!type:~%%j,1!"==" " (set/p= <nul)
if "!type:~%%j,1!"=="=" (set/p= <nul&set/p==<nul) else (
call set/p="%%type:~%%j,1%%"<nul)
endlocal)
echo.
)
pause>nul


2007-10-5 05:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zzs162
初级用户





积分 27
发帖 11
注册 2006-3-16
状态 离线
『第 27 楼』:  

呵呵`不错`佩服``

2008-4-25 05:23
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
radem
高级用户

CMD感染者


积分 691
发帖 383
注册 2008-5-23
状态 离线
『第 28 楼』:  

受益非浅!
但还有一问题:怎样用P修改含特殊符号的文本,如:
将test.txt
ip 125.219.59.216

sv_contact  "568ggstart@163.Com"
// 服务器构建者的联系邮箱

sv_send_resources 1
// 自动向客户端传送地图关联的 *.res文件里包括的资源文件

sv_maxrate 25000
// 服务器最大传输速率 <0-25000>


改为:
ip 59.32.211.105

sv_contact  "568ggstart@163.Com"
// 服务器构建者的联系邮箱

sv_send_resources 1
// 自动向客户端传送地图关联的 *.res文件里包括的资源文件

sv_maxrate 25000
// 服务器最大传输速率 <0-25000>




2008-6-22 00:27
查看资料  发短消息 网志   编辑帖子  回复  引用回复
silanger
初级用户





积分 22
发帖 10
注册 2008-9-15
状态 离线
『第 29 楼』:  

太高深了,光看不顶说不过去,顶一下又恐说我外行凑热闹。还是顶了吧

2008-9-16 20:57
查看资料  发短消息 网志   编辑帖子  回复  引用回复
laihaibin08
新手上路





积分 13
发帖 15
注册 2008-10-19
状态 离线
『第 30 楼』:  

我们几位版主真是太有才了

2008-10-19 17:25
查看资料  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] [3] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: