[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
教程写的不错
只是不明白图片化的意义
大略是防编辑的

用windows自带的图片和传真查看器看着比较累
大概看了不到三分之一
看到一句话挺有意思
作者还给读者留了一道家庭作业

“在控制台中我们要显示单个%可以使用:echo ^%,想想为什么”
一道好题目
首先可以明确
在控制台中显示单个%直接用echo %就可以
在这里转义字符^实际上是个无关大碍的蛇足
那么为什么在控制台中可以直接显示%呢?

这个题目发扬楼主的风格留给楼下
天的白色影子

TOP

1# applba
在CMD窗口中,只能一行一行的输入和执行语句,也就是说只能执行单行语句!

cmd 窗口中也可以输入和执行多行多行语句
方法是在命令行中输入()

C:\Documents and Settings\Administrator>(
More? dir
More? cd
More? )
天的白色影子

TOP

cmd.exe对批处理中特殊字符的解释机制
上面两步中如果遇到了%,会中断并跳入%的解释,处理完毕后会返回,继续对其他特殊符号进行转义。
applba 发表于 2011-5-16 04:18

我也认为学习其实是一个不断反复打破和重新确定某些旧有概念和思维定势的过程
比如“预处理”的概念在解释特殊字符处理时确实过于笼统
但某些基本的原理应该是经得起考验的
比如特殊字符优先级的问题
%明显比其他特殊字符具有更高的优先级
也就是说cmd的转义字符检查不止一次
cmd第一次读入语句后首先要检查的符号就是%
它在检查完整条语句中所有的%后
才去重新检查语句中其它的字符
所以对于%这里不存在中断与返回的问题
天的白色影子

TOP

10# applba
对于cmd控制台对于%的处理
比你和7楼的理解还要复杂
举几个例子
cmd控制台下for的迭代变量是单个%而不是两个%
cmd控制台下执行echo %%OS% 将显示%OS=Windows_NT
cmd控制台下%var%引用的环境变量若不存在会原样显示而不是扩展为空
天的白色影子

TOP

1# applba
Command.com最初是MS-DOS的命令解释程序,在Windows XP中依然得到了继承,它可以实现cmd.exe的大多数功能。

记得有一篇将Windows中的命令行的帖子
其中就主要讨论了cmd与command的关系
简单来说
Windows NT系列的command.com
是为了兼容MS-DOS时代的16位程序而存在的
是16位dos程序的命令行入口程序
其背后的命令解释器仍然是cmd.exe
只不过中间由ntvdm.exe增加了一道设备虚拟层
天的白色影子

TOP

1# applba
这几个符号的优先级 管道符号(|) 高于 输入输出重定向符号(< > >>) 高于 命令分隔符(&,&&,||)

这就是矫枉过正了
已确认包括 & | > < 都在同一个命令行预处理循环中
所以说他们的处理优先级是相等的
预处理结果只决定于它们出现的位置以及程序逻辑
这其中也包括对&& || >& <& 1> >> 等符号的处理
天的白色影子

TOP

29# applba
不记得谁说过:
for和if是高级语句,相当于一个命令解释器,他们能独立的对后面的语句块进行解释……

这句话我也很耳熟
但是这样的理解我认为过于极端了
for和if的特殊之处只在于
它们可以在语句中使用()
这意味着他们可能要在语句执行中
重新启动命令行的部分预处理功能
但是本质上仍然是语句块
仍然是在读入时就被预处理了大部分
真正的命令解释器仍然是cmd.exe
for 和 if 都不会开启新的cmd进程
除非使用 for /f 中的命令行语法
天的白色影子

TOP

37# applba
  1. set "a=10f611|findstr f6"
  2. echo %a% & echo string
  3. pause
  4. echo test1234 > test.txt
  5. find "test" < test.txt | find "1234"
  6. find "test" | find "1234" < test.txt
复制代码
这个例子也许不太好
我只是想说
& | < 谁先解释取决于谁在命令行之前
以及相应的功能逻辑

这与%不同
即使在命令行末尾
也会被先行扩展
天的白色影子

TOP

本帖最后由 qzwqzw 于 2011-5-20 08:25 编辑

所谓的“不能超越”不能理解
不需要把概念搞的这样理论化
天的白色影子

TOP

返回列表