| 
 
vkill 
金牌会员
 
      
 
  
  
积分 4103 
发帖 1744 
注册 2006-1-20 来自 甘肃.临泽 
状态 离线
 | 
『楼 主』:
 echo 变量的问题,变量的值有特殊字符
 
使用 LLM 解释/回答一下
  
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 楼』:
 
 
使用 LLM 解释/回答一下
  
测试版本: 
名称:     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 
高级用户
 
    
 
  
 
积分 623 
发帖 214 
注册 2006-9-22 
状态 离线
 | 
『第 3 楼』:
 
 
使用 LLM 解释/回答一下
  
我的是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 | 
  
 | 
 | 
 
redtek 
金牌会员
 
      
 
  
  
积分 2902 
发帖 1147 
注册 2006-9-21 
状态 离线
 | 
『第 4 楼』:
 
 
使用 LLM 解释/回答一下
  
下面写入方式不能创建文件,也不能写入:) 
 
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 楼』:
 
 
使用 LLM 解释/回答一下
  
 
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 来自 甘肃.临泽 
状态 离线
 | 
 | 
  2006-12-3 02:03 | 
  
 | 
 | 
 
scriptor 
银牌会员
 
     
 
  
 
积分 1187 
发帖 555 
注册 2006-12-21 
状态 离线
 | 
 | 
  2007-1-12 12:40 | 
  
 |