我正在寻找有关环境变量%COMPUTERNAME%的帮助。它在我的脚本中用作以本地主机名命名文件的方法。在另一点上,我使用该脚本在网络上的不同目录(到映射驱动器)中构建了一个文件夹,我需要将该文件夹命名为原始计算机的本地主机名。这可能没有意义,但我将在下面提供一个示例:
Comp1 = BobPC
Comp2 = JakePC我在BobPC上制作了一个压缩文件,然后将其复制到JakePC上,但我需要将此文件复制到一个目录中,例如...C:\CopiedFiles\BobPc,因为此脚本将在多台计算机上运行,并且每台计算机都需要一个文件夹,文件将位于其中,并以其所在的计算机命名。
我希望这是有意义的。
现在,我可以让它构建一个文件夹,但是它将它命名为"JakePC“,这显然是因为我使用环境变量来获取本地主机名。
我的问题基本上是,我如何才能告诉它以原始计算机的名字命名文件夹?
如果您有任何问题,请让我知道,我将非常乐意解释,因为我知道我可能没有太大的意义。
发布于 2012-07-27 21:25:18
如果您从源pc运行该脚本,可以使用以下命令
dim oFso, oShell, oShellEnv, computerName, target, source
const overwrite = true
set oFso = CreateObject("Scripting.FileSystemObject")
set oShell = WScript.CreateObject("WScript.Shell")
set oShellEnv = oShell.Environment("Process")
computerName = oShellEnv("ComputerName")
source = "c:\test\yourZip.zip"
target = "\\JakePC\copiedFiles\" & computerName & ".zip"
'copiedFiles needs to be a share with write permission for the user who runs the script
oFso.CopyFile source, target, overwrite
'do check on errors and the cleanup of your objects如果您从targetpc运行它,您应该使用远程脚本,但这并不明智,因为您必须知道需要运行它的pc的名称,所以不需要环境变量。
发布于 2016-12-07 23:17:10
我找到了两个片段来获取主机名。两者都可以在windows 7 sp1和windows server 2012中正常运行:
'
' How to get the hostname
'
' References
'
' Method1: http://www.robvanderwoude.com/vbstech_network_names_hostname.php
' method2: https://msdn.microsoft.com/en-us/library/s6wt333f(v=vs.84).aspx
WScript.Echo "Method 1 "
Set wshShell = WScript.CreateObject( "WScript.Shell" )
strRegValue = "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Hostname"
strHostName = wshShell.RegRead( strRegValue )
WScript.Echo "Host Name: " & strHostName
WScript.Echo "Method 2 (include other network values)"
Set WshNetwork = WScript.CreateObject("WScript.Network")
WScript.Echo "Domain = " & WshNetwork.UserDomain
WScript.Echo "Computer Name = " & WshNetwork.ComputerName
WScript.Echo "User Name = " & WshNetwork.UserName不同之处在于WshNetwork.ComputerName方法检索大写的主机名。
https://stackoverflow.com/questions/11654952
复制相似问题