以编程方式区分系统类型--Windos XP v.Windows 7

时间:2014-10-05 16:34:55

标签: emacs elisp

我正在寻找一些帮助,请以编程方式区分系统类型的Windows XP与Windows 7 - 使用相同的Emacs版本

Emacs Version 2014-10-02关于LEG570的GNU Emacs 24.3.94.1(i686-pc-mingw32)

我想做点什么:

(cond
  ((eq system-type 'darwin)
     . . .)
  ((and
      (eq system-type 'windows-nt)
      (eq ... Windows XP)) ;; pseudocode
     . . .)
  ((and
      (eq system-type 'windows-nt)
      (eq ... Windows 7)) ;; pseudocode
     . . .) )

2 个答案:

答案 0 :(得分:3)

在这两个系统上尝试M-:x (w32-version) RET。结果应该是不同的。 然后在以下内容中使用它:

(cond ((equal (w32-version) '...) ...)

答案 1 :(得分:2)

我认为这里的方法如下:

  • 当系统类型为'windows-nt 时有子条件。
  • 解析一些外来代码的输出以获取Windows变体。

方法1:虚拟shell命令(特定于OS语言环境的输出?)

使用 ver 获取操作系统版本。

http://www.windows-commandline.com/find-windows-os-version-from-command/

上述方法可能会根据用户区域设置生成不同的字符串输出。

方法2:使用一些外部自定义代码

或者你可以编译一些外部C ++应用程序并处理操作系统语义版本映射(http://support2.microsoft.com/kb/307394

然后事情变得简单

if system-type is windows-nt 
   variant = parse (shell-command-to-string "ver")
   conditions to run code for interesting variant with a default :else case