本帖最后由 CrLf 于 2011-11-3 06:12 编辑
暂时只想到四个方面,因为学批时接触 xp 的时间较少,所以应该还有不少遗漏的内容,欢迎插楼补充、解释原因、纠正谬误。
一、win7 下 set 命令中的 = 貌似能被转义(待定),xp 下不能- @echo off
- set str=\=a=b=c=d=e=f=g=h
- set %str%
- setlocal enabledelayedexpansion
- for /l %%a in (1 2 15) do (
- for %%b in ("!str:~,%%a!") do echo %%%%~b%% = !%%~b!
- )
- pause
- ::发现这段代码在 win7 或 vista 下会出现一条变量中包含多个变量名的现象,原因未知,不过 xp 下未出现
复制代码 二、wmic 中的别名不同
xp 下,wmic 有这么一个别名:“MEMLOGICAL - 系统内存管理 (配置布局和内存可用性)。”
但是到了 win7 中居然不见了,wmic 你到底是退化了还是进化了...
不过印象中,win7 里似乎也有某个别名是 xp 所不具备的,什么时候做个 fc 对比,看 wmic 中究竟藏有多少猫腻。
除了别名的区别,win7 下的 wmic 输出内容时存在多余的单独几行回车符,xp 下则是出现在正文的行末。
三、win7 里,set /p 自动去除提示语句的前缀空格与 tab
直接影响就是有些 xp 下屡试不爽的特效到 win7 里残了:- @echo off
- for %%a in (b b s . b a t h o m e . n e t " " 欢 迎 您) do set /p=%%~a<nul
- pause
- ::xp 下是能正确输出的:bbs.bathome.net 欢迎您
- ::win7 下却丢弃了空格:bbs.bathome.net欢迎您
- ::除了空格,tab 也如此,它们只要作为前缀就会被丢弃,于是乎空格和 tab 在不为人知的角落抱头痛哭:win7 你丫就是度娘...
复制代码 四、nls 顺序貌似不同(麻烦有条件的朋友验证一下)
xp 下有个著名的趣谈:"〇"=="",〇究竟是什么,为什么能等于空呢?据寒夜版主所说,这是 nls 表搞的鬼,到 win7 下没有出现此现象。印象中向 plp 请教个什么事情的时候,他也提到过通过拆分字符直接生成 unicode 文件头的办法在 win7 下失效。
另外,system32 文件夹下的 nls 文件数量也大大不同,比如 win7 下有 c_65001.nls,xp 下却没有,所以 xp 下无法使用 chcp 65001 来切换代码页。 |