3

環境変数 %COMPUTERNAME% に関するヘルプを探しています。私のスクリプトでは、ローカルホスト名にちなんでファイルに名前を付ける手段として機能しています。別の時点で、スクリプトを使用してネットワーク上の別のディレクトリ (マップされたドライブ) にフォルダーを作成し、そのフォルダーに元のコンピューターのローカル ホスト名を付ける必要があります。意味不明かもしれませんが、以下に例を示します。

Comp1 = BobPC
Comp2 = JakePC

BobPC で zip ファイルを作成し、それを JakePC にコピーしていますが、このファイルを C:\CopiedFiles\BobPc のようなディレクトリにコピーする必要があります。それらのうち、ファイルが配置されるフォルダーが必要です。ファイルは、元のコンピューターにちなんで名付けられます。

これが理にかなっていることを願っています。

今は問題なくフォルダーを作成できますが、環境変数を使用してローカルホスト名を取得しているため、明らかに「JakePC」という名前が付けられています。

私の質問は基本的に、元のコンピューターにちなんでフォルダーに名前を付けるように指示するにはどうすればよいですか?

ご不明な点がございましたら、お気軽にお問い合わせください.

4

2 に答える 2

6

ソース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の名前を知っている必要があるため、environmentvariableは必要ありません。

于 2012-07-27T13:25:18.423 に答える
2

ホスト名を取得するための 2 つのスニペットが見つかりました。どちらも 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、ホスト名を大文字で取得するメソッドです。

于 2016-12-07T15:17:10.243 に答える