• 受付
  • すぐに回答を!

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

  • 質問No.9675997
  • 閲覧数56
  • ありがとう数1
  • 気になる数0
  • 回答数1

お礼率 100% (1/1)

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("おわり")

-------------------

回答 (全1件)

  • 回答No.1

ベストアンサー率 17% (200/1145)

■条件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

お礼率 100% (1/1)

hahaha8635様

ご回答ありがとうございます

弊社で導入している、ソフトでVBSを使用して上書きができるので、
恐らくできると思われます

ではなぜそのソフトで行わないかというと、
条件3に起因していて、ユーザーごとの名称を全て指定して、
個別に配布の設定をしてあげないといけません

それは現実的でない為、自身で作成しようと思いました

参考URL、ありがとうございます
閲覧してみます
投稿日時:2019/11/08 08:57
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A

ピックアップ

ページ先頭へ