中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » echo 变量的问题,变量的值有特殊字符
作者:
标题: echo 变量的问题,变量的值有特殊字符 上一主题 | 下一主题
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『楼 主』:  echo 变量的问题,变量的值有特殊字符

set "str=`-=[]\;',./~%!@#o^&*()_+{}|:<>?"abc123ABC00"

>test.txt echo "%str%"

xp 下可以把这个变量的值写入文件,2003就不可以,原因未知,还有谁03也测试下,2003的cmd下可以echo出

echo "%str%" >test.txt  这样写不进文件的

2006-12-2 10:08
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
redtek
金牌会员





积分 2902
发帖 1147
注册 2006-9-21
状态 离线
『第 2 楼』:  

测试版本:

名称:     WindowsServer 2003, Enterprise Edition
版本:     5.2 内部版本 3790
C:\TEMP\temp>set "str=`-=[]\;',./~%!@#o^&*()_+{}|:<>?"abc123ABC00"

C:\TEMP\temp>>test.txt echo "%str%"

C:\TEMP\temp>type test.txt
"`-=[]\;',./~%!@#o^&*()_+{}|:<>?"abc123ABC00"
Windows Server 2003 可以正常写入~:)

[ Last edited by redtek on 2006-12-1 at 09:40 PM ]



    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
2006-12-2 10:39
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tianzizhi
高级用户




积分 622
发帖 214
注册 2006-9-22
状态 离线
『第 3 楼』:  

我的是windows2003 测试了一下,
set "str=`-=[]\;',./~%!@#o^&*()_+{}|:<>?"abc123ABC00"
echo "%str%" >test.txt   这样写不进去.
set "str=`-=[]\;',./~%!@#o^&*()_+{}|:<>?"abc123ABC00"
echo "%str%" ">test.txt"
这样可以写入,请vkill测验一下,最好可以把这样可以写入的原因说一下,让大家理解一下.

[ Last edited by tianzizhi on 2006-12-2 at 11:08 AM ]

2006-12-2 10:43
查看资料  发送邮件  发短消息 网志  OICQ (419503077)  编辑帖子  回复  引用回复
redtek
金牌会员





积分 2902
发帖 1147
注册 2006-9-21
状态 离线
『第 4 楼』:  

下面写入方式不能创建文件,也不能写入:)
C:\TEMP\temp>set "str=`-=[]\;',./~%!@#o^&*()_+{}|:<>?"abc123ABC00"

C:\TEMP\temp>echo "%str%" >test.txt
"`-=[]\;',./~%!@#o^&*()_+{}|:<>?"abc123ABC00" >test.txt
以上是帮兄测试的结果~:)

测试版本:

名称:     WindowsServer 2003, Enterprise Edition
版本:     5.2 内部版本 3790



    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
2006-12-2 10:44
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
redtek
金牌会员





积分 2902
发帖 1147
注册 2006-9-21
状态 离线
『第 5 楼』:  


C:\TEMP>set "str=`-=[]\;',./~%!@#o^&*()_+{}|:<>?"abc123ABC00"

C:\TEMP>echo "%str%"
"`-=[]\;',./~%!@#o^&*()_+{}|:<>?"abc123ABC00"
Echo 显示上面加了引号的变量内容成功(不加引号肯定显示不了这些特殊符号)


(然后再测试:)
C:\TEMP>echo %str%
此时不应有 >。

(说明上面有特殊符号原因)

C:\TEMP>echo %str%"
此时不应有 >。

(再上面这样测一个,给它“配”一个引号,输出错误,说明特殊符号不在“匹配”。

C:\TEMP>echo "%str%
"`-=[]\;',./~%!@#o^&*()_+{}|:<>?"abc123ABC00
(再上面这样测一下,给它左边“匹配”一下,结果可以成功输出)
(这说明 str 变量内的那一个单独的“引号” 就是str变量内abc123……左边的那一个)
(echo "%str% 正好与str变量中那个“引号”配对使用了,而后面的abc12……这些是非特殊字符)

所以,使用下面命令就可以成功写入文件了:

C:\TEMP>echo "%str% >test.txt

C:\TEMP>type test.txt
"`-=[]\;',./~%!@#o^&*()_+{}|:<>?"abc123ABC00




    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
2006-12-3 01:13
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
vkill
金牌会员





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

redtek兄:echo "%str% >test.txt 这样不是不通用

2006-12-3 02:03
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
scriptor
银牌会员




积分 1187
发帖 555
注册 2006-12-21
状态 离线
『第 7 楼』:  

有掏到好东西了

2007-1-12 12:40
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: