VBScript根据操作系统和体系结构复制文件

时间:2013-02-13 12:49:17

标签: windows vbscript

我必须将.cfg文件复制到工作区服务器上程序文件目录下的特定位置。

不幸的是,这不仅取决于操作系统(2003/2008/2012),还必须确定操作系统是32位还是64位并复制到“Program Files(x86)”目录路径(如果适用)。

我的计划是在一台服务器上安装该文件的三个不同版本,并让脚本将相关版本复制到正确的位置(覆盖现有文件),但我几乎没有接触过vbscripting我正在努力奋斗!

2 个答案:

答案 0 :(得分:2)

WMI可能是最好的方法。假设脚本将在每个目标主机上运行,​​您可以执行以下操作:

srcFolder = "..."

Set sh  = CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
Set wmi = GetObject("winmgmts://./root/cimv2")

For Each os In wmi.ExecQuery("SELECT * FROM Win32_OperatingSystem")
  ver  = Left(os.Version, 3)
Next

Select Case ver
  Case "5.2" : src = fso.BuildPath(srcFolder, "w3003_foo.cfg")
  Case "6.0" : src = fso.BuildPath(srcFolder, "w2008_foo.cfg")
  Case "6.1" : src = fso.BuildPath(srcFolder, "w2008r2_foo.cfg")
  Case "6.2" : src = fso.BuildPath(srcFolder, "w2012_foo.cfg")
  Case Else  : WScript.Echo "Unsupported OS version: " & ver
               WScript.Quit
End Select

If sh.ExpandEnvironmentStrings("%PROCESSOR_ARCHITECTURE%") = "AMD64" Then
  dst = sh.ExpandEnvironmentStrings("%ProgramFiles(x86)%\some\foo.cfg")
Else
  dst = sh.ExpandEnvironmentStrings("%ProgramFiles%\some\foo.cfg")
End If

fso.CopyFile src, dst

答案 1 :(得分:1)

您可以使用WMI(或从注册表)获得的操作系统版本。

For Each os In GetObject("winmgmts:").InstancesOf("Win32_OperatingSystem")
    ver = os.Version
Next

但对于OS Architecture我会建议下一个 - WMI Win32_ProcessorShell.Environment(更多胖子)。

ver = GetObject("winmgmts:root\cimv2:Win32_Processor='cpu0'").AddressWidth
If ver = 64 Then ...

ver = CreateObject("WScript.Shell").Environment("SYSTEM")("PROCESSOR_ARCHITECTURE")
If ver = "AMD64" Then ...