中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-25 15:00
47,812 主题排行 / 349,910 发帖 / 今日 0 篇 / 48,262 会员排行
DOS批处理 & 脚本技术(批处理室) » [提问]bat中转向输出问题
可打印版本  1,752 / 6
第1楼 electronixtar 发表于 2006-06-28 14:49
铂金会员 发帖 2,672 积分 7,493
[提问]bat中转向输出问题
1.
echo a>D:\a,txt
结果生成了文件a,内容为test,txt
改成
echo a>"D:\a,txt"
正常

2.
echo test 1>1.txt adsfadf
生成1.txt,内容:
test adsfadf

这些现象怎么解释呢?

如果用这些特性输出exe木马那么……

[ Last edited by electronixtar on 2006-6-28 at 14:51 ]
第2楼 bagpipe 发表于 2006-06-28 15:24
银牌会员 发帖 425 积分 1,144 来自 北京
echo hello world>1.txt

echo >1.txt hello world

echo hello>1.txt world

>1.txt echo hello world

看看这个,也许你就会明白了....................
第3楼 electronixtar 发表于 2006-06-28 17:02
铂金会员 发帖 2,672 积分 7,493
难道说那些重定向像ANSI转义代码那样被忽略了??
第4楼 willsort 发表于 2006-06-29 09:53
元老会员 发帖 1,512 积分 4,432
Re electronixtar:

这是由 cmd/command 的命令行预处理机制造成的。

命令行解释器在正式执行读入的一条命令之前,会进行许多预处理过程,以对其中的转义符号进行转义解释和过滤,并完成命令行的格式化工作,包括空格和制表符缩减,命令行参数界分,IO端口的重定向等等。

而命令行中的各种符号存在优先级,也就是说,它总是先处理优先级最高的符号,待将符号处理并转义后,将此符号滤去再处理新得到的命令行,带到所有的特殊符号都被处理后,才会正式执行最后得到的命令语句。这在一些语言的预编译或预处理过程中也比较常见。

比如说,命令行前后和之间的空格和制表符就具有很高的优先级,它具有界分命令和参数的作用;而表征变量的百分号%、表征字符串得引号对""也具有比较高的优先级,比管道和重定向都要高。另外,cmd中引入的表征单字符的^、表征变量延迟的叹号对!!,容纳语句块的括号对(),连接命令的&、&&、||等,使得命令行的优先级更加丰富,也更加复杂。
第5楼 electronixtar 发表于 2006-06-29 11:38
铂金会员 发帖 2,672 积分 7,493
博大精深,受教了~
第6楼 htysm 发表于 2006-06-30 10:16
高级用户 发帖 415 积分 866
太精彩,又是一个高手过招,
第7楼 xiongwei2624 发表于 2006-06-30 14:04
初级用户 发帖 44 积分 96 来自 深圳
厉害,佩服深刻!
学到,慢慢掌握
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023