web-dev-qa-db-ja.com

ログオンスクリプト(vbs)でFile.CopyHereを使用してプロンプトなしでファイルを上書きする

いくつかのフォントをインストールするためのログオンスクリプト(vbs)を作成しようとしています。フォントがインストールされている場合、「この場所に同じ名前のファイルがすでにあります」というプロンプトが表示されます。

プロンプトなしでファイルを強制的に置き換えるにはどうすればよいですか?

私のスクリプトは次のようになります:

Const FONTS = &H14&


Const FOF_SILENT = &H4&
Const FOF_RENAMEONCOLLISION = &H8&
Const FOF_NOCONFIRMATION = &H10&
Const FOF_ALLOWUNDO = &H40&
Const FOF_FILESONLY = &H80&
Const FOF_SIMPLEPROGRESS = &H100&
Const FOF_NOCONFIRMMKDIR = &H200&
Const FOF_NOERRORUI = &H400&
Const FOF_NOCOPYSECURITYATTRIBS = &H800&
Const FOF_NORECURSION = &H1000&
Const FOF_NO_CONNECTED_ELEMENTS = &H2000&


cFlags = FOF_SILENT + FOF_NOCONFIRMATION + FOF_NOERRORUI

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(FONTS)
objFolder.CopyHere "\\SERVER01\Fonts\*", cFlags

MSDNは(16) Respond with "Yes to All" for any dialog box that is displayed.を推奨しますが、プロンプトを妨げません。

(私はWindows Server 2008を使用しています)

http://msdn.Microsoft.com/en-us/library/windows/desktop/bb787866(v = vs.85).aspx

3
Jonas Stensved

フラグは正しいと思いますが、Filesystemオブジェクトに対してCopyFolderを呼び出してみてください。
VBscriptの参照として、以下を強くお勧めします。
http://www.Microsoft.com/download/en/details.aspx?id=2764

object.CopyFolder ( source, destination[, overwrite] );
Arguments
object 
Required. Always the name of a FileSystemObject. 
source 
Required. Character string folder specification, which can include wildcard characters, for one or more folders to be copied. 
destination 
Required. Character string destination where the folder and subfolders from source are to be copied. Wildcard characters are not allowed. 
overwrite 
Optional. Boolean value that indicates if existing folders are to be overwritten. If true, files are overwritten; if false, they are not. The default is true. 
Remarks
Wildcard characters can only be used in the last path component of the source argument. For example, you can use: 

[VBScript]
FileSystemObject.CopyFolder "c:\mydocuments\letters\*", "c:\tempfolder\"
0
Clayton