中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-03 03:12
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » echo 变量的问题,变量的值有特殊字符 查看 1,340 回复 6
楼 主 echo 变量的问题,变量的值有特殊字符 发表于 2006-12-02 10:08 ·  中国 甘肃 张掖 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
20年会员
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
set "str=`-=[]\;',./~%!@#o^&*()_+{}|:<>?"abc123ABC00"

>test.txt echo "%str%"

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

echo "%str%" >test.txt 这样写不进文件的
2 发表于 2006-12-02 10:39 ·  中国 北京 朝阳区 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
19年会员
UID 63324
性别 男
状态 离线
测试版本:

名称: 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,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
3 发表于 2006-12-02 10:43 ·  中国 江苏 南京 电信
高级用户
★★
积分 623
发帖 214
注册 2006-09-22 20:48
19年会员
UID 63387
状态 离线
我的是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 ]
4 发表于 2006-12-02 10:44 ·  中国 北京 朝阳区 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
19年会员
UID 63324
性别 男
状态 离线
下面写入方式不能创建文件,也不能写入:)


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,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
5 发表于 2006-12-03 01:13 ·  中国 北京 朝阳区 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
19年会员
UID 63324
性别 男
状态 离线

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,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
6 发表于 2006-12-03 02:03 ·  中国 甘肃 张掖 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
20年会员
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
redtek兄:echo "%str% >test.txt 这样不是不通用
7 发表于 2007-01-12 12:40 ·  中国 北京 中国科学院研究生院
银牌会员
★★★
积分 1,187
发帖 555
注册 2006-12-21 07:35
19年会员
UID 74129
性别 男
状态 离线
有掏到好东西了
论坛跳转: