Board logo

标题: [讨论]cmd 在 win7 与 xp 下的差异小汇 [打印本页]

作者: CrLf    时间: 2011-11-2 23:49     标题: [讨论]cmd 在 win7 与 xp 下的差异小汇

本帖最后由 CrLf 于 2011-11-3 06:12 编辑

暂时只想到四个方面,因为学批时接触 xp 的时间较少,所以应该还有不少遗漏的内容,欢迎插楼补充、解释原因、纠正谬误。

一、win7 下 set 命令中的 = 貌似能被转义(待定),xp 下不能
  1. @echo off
  2. set str=\=a=b=c=d=e=f=g=h
  3. set %str%
  4. setlocal enabledelayedexpansion
  5. for /l %%a in (1 2 15) do (
  6. for %%b in ("!str:~,%%a!") do echo %%%%~b%% = !%%~b!
  7. )
  8. pause
  9. ::发现这段代码在 win7 或 vista 下会出现一条变量中包含多个变量名的现象,原因未知,不过 xp 下未出现
复制代码
二、wmic 中的别名不同
xp 下,wmic 有这么一个别名:“MEMLOGICAL               - 系统内存管理 (配置布局和内存可用性)。”
但是到了 win7 中居然不见了,wmic 你到底是退化了还是进化了...
不过印象中,win7 里似乎也有某个别名是 xp 所不具备的,什么时候做个 fc 对比,看 wmic 中究竟藏有多少猫腻。
除了别名的区别,win7 下的 wmic 输出内容时存在多余的单独几行回车符,xp 下则是出现在正文的行末。

三、win7 里,set /p 自动去除提示语句的前缀空格与 tab
直接影响就是有些 xp 下屡试不爽的特效到 win7 里残了:
  1. @echo off
  2. for %%a in (b b s . b a t h o m e . n e t " " 欢 迎 您) do set /p=%%~a<nul
  3. pause
  4. ::xp 下是能正确输出的:bbs.bathome.net 欢迎您
  5. ::win7 下却丢弃了空格:bbs.bathome.net欢迎您
  6. ::除了空格,tab 也如此,它们只要作为前缀就会被丢弃,于是乎空格和 tab 在不为人知的角落抱头痛哭:win7 你丫就是度娘...
复制代码
四、nls 顺序貌似不同(麻烦有条件的朋友验证一下)
xp 下有个著名的趣谈:"〇"=="",〇究竟是什么,为什么能等于空呢?据寒夜版主所说,这是 nls 表搞的鬼,到 win7 下没有出现此现象。印象中向 plp 请教个什么事情的时候,他也提到过通过拆分字符直接生成 unicode 文件头的办法在 win7 下失效。
另外,system32 文件夹下的 nls 文件数量也大大不同,比如 win7 下有 c_65001.nls,xp 下却没有,所以 xp 下无法使用 chcp 65001 来切换代码页。
作者: wc726842270    时间: 2011-11-3 15:38

请教一下如果把==换成EQU还会样么?(是不是没有映射成功啊。)
PS:讨论的人还真是少,本想等结果。是不是和我一样的人太多了,呵呵没办法,要个沙发吧。




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2