• 締切済み

VBSで特定のディレクトリのファイルを上書きする

C:\app\XXXXX\a\b\c\d\e\1.txt ■条件1 上記の1.txtを上書きしたい ■条件2 保護がかかっているので、XCOPYの要領で強制的に上書きしたい ■条件3 XXXXXがユーザーごとの名称になっている為、そこを無視したい ■条件4 C:\app\XXXXX\a\b\c\d\e\f\1.TXTという似たファイルがあるので、完全一致させたい ■条件5 実行するのはエンドユーザーで、管理者実行時のPWは周知していない 以上の条件の元、調べながらやってみたのですが、うまくいきません 下記の内容のどこを直せばいいでしょうか ------------------- Option Explicit Dim WMI, OS, Value, Shell do while WScript.Arguments.Count = 0 and WScript.Version >= 5.7 Set WMI = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2") Set OS = WMI.ExecQuery("SELECT *FROM Win32_OperatingSystem") For Each Value in OS if left(Value.Version, 3) < 6.0 then exit do Next Set Shell = CreateObject("Shell.Application") Shell.ShellExecute "wscript.exe", """" & WScript.ScriptFullName & """ uac", "", "runas" WScript.Quit loop Dim co, dt, f, gf, m, mf, n, so dt = CreateObject("WScript.Shell").SpecialFolders("Desktop") mf = dt & "\1.txt" co = "product\11.2.0\client_1\network\admin" Set so = CreateObject("Scripting.FileSystemObject") Set gf = so.GetFolder(so.GetParentFolderName(WScript.ScriptFullName)) n = so.GetFileName(mf) For Each f In gf.SubFolders m = f & "\" & co If so.FolderExists(m) = True Then If so.FileExists(m & "\" & n) = True Then so.CopyFile mf, m & "\" & n, True End If End If Next Set gf = Nothing Set so = Nothing MsgBox("おわり") -------------------

みんなの回答

  • hahaha8635
  • ベストアンサー率22% (800/3610)
回答No.1

■条件2 ■条件3 排他管理がOSレベルなのでできないと思う ■条件1 元のファイルを削除 ← 失敗するとファイルロストする またはリネームして ← ゴミが残る ファイル作成すればいい ■条件4 http://www.webtwinkle.com/?VBA%2F%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%2F%E3%83%91%E3%82%B9%E3%81%AE%E5%8F%96%E5%BE%97 ■条件5 https://codezine.jp/article/detail/6764

kai_haku777
質問者

お礼

hahaha8635様 ご回答ありがとうございます 弊社で導入している、ソフトでVBSを使用して上書きができるので、 恐らくできると思われます ではなぜそのソフトで行わないかというと、 条件3に起因していて、ユーザーごとの名称を全て指定して、 個別に配布の設定をしてあげないといけません それは現実的でない為、自身で作成しようと思いました 参考URL、ありがとうございます 閲覧してみます

関連するQ&A