• 締切済み

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/3609)
回答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

  • vbsでバックアップデータファイルをlzh形式に自動圧縮したい

    毎日、システムのバックアップデータが、その日の日付をファイル名として作成されます。 このファイルを日々圧縮しているのですが、自動で出来たらと思います。 『教えて!goo』等で調べて何とか書いたのが下のソースです。 StrLzhName = "test.txt.lzh" StrFileName = "test.txt" Set shell = WScript.CreateObject("WScript.Shell") shell.CurrentDirectory = "c:\" Set wShell = CreateObject("WScript.Shell") Set oExec = wShell.Exec("lha32 a -d StrLzhName StrFileName") c:\直下に、lha32.exeと、test.txtを置いてあります。 wShell.Exec()で、変数StrLzhNameと、StrFileNameを直接、 test.txt.lzh、test.txtと指定すると、圧縮できます。 このような変数の使い方は間違っているのでしょうか?? 毎日ファイル名が変わるので、どうしても変数が使いたいのです。 アドバイスよろしくお願いいたします。

  •  VBSの作り方がわかりません

    下記のようなVBSを使いたいのですが   テキストでなくエクセルをアクティブにしたいのですがうまくいきません   どのように直せばよいのかお教えください。  お願いいたします。 Dim excel With CreateObject("Wscript.Shell") .Run "D:\DATA\T.txt" End With On Error Resume Next Set excel = GetObject(, "Excel.Application") If Err.Number <> 0 Then Set excel = CreateObject("Excel.Application") End If excel.Visible = True excel.Workbooks.Open "D:\DATA\Sin1.xls"

  • VBS

    VBSであるファイルを1行ずつ読み込み、その読み込んだ値を ある別のファイルにリダイレクトしたいのですが、 どのように書けばよいか教えてください。 下記のように、echoでは出すことができるのですが、 ファイルにリダイレクトというのができません。 よろしくお願いします。 ==== sample shell ========================= Option Explicit On Error Resume Next Dim objFSO ' FileSystemObject Dim objFile ' ファイル読み込み用 Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") If Err.Number = 0 Then Set objFile = objFSO.OpenTextFile("d:\dr1.txt") If Err.Number = 0 Then Do While objFile.AtEndOfStream <> True WScript.Echo objFile.ReadLine Loop objFile.Close Else WScript.Echo "ファイルオープンエラー: " & Err.Description End If Else WScript.Echo "エラー: " & Err.Description End If Set objFile = Nothing Set objFSO = Nothing ============================================================

  • vbsでexcelのクリアとフォームの表示をしたい

    お世話になっております。 vbsの以下の記述でexcelを開いています。 開くところまでは行くのですが、その後のsheet1のデータのクリアとUserForm1の表示がどうしてもできません。 申し訳ありませんが、どなたかおわかりの方、教えていただけないでしょうか。 宜しくお願いいたします。 Dim oApp Dim objWshShell Dim scriptPath 'Excelオブジェト作成 Set oApp = CreateObject("Excel.Application") 'WScript.Shellオブジェクト作成 Set objWshShell = CreateObject("WScript.Shell") oApp.Visible = True '不可視にする oApp.UserControl = True 'Excelファイルを開く scriptPath = WScript.ScriptFullName scriptPath = left(scriptPath,len(scriptPath)-len(WScript.ScriptName)) oApp.Workbooks.Open scriptPath & "共同資料.xlsm"

  • vbsからbatを動かしたいです♪

    vbsからbatを動かしたいです♪ リモートでマシンを動かしたいのですが・・・。 動きません!なぜでしょう? どなたか助けてください、お願いします。 =============== Set shell = CreateObject("Wscript.Shell") shell.Run "\\(マシン名)\C$test\test.bat" set shell = nothing =============

  • VBSでファイルの自動保存

    vbs初心者です。自分なりに調べたのですが、うまくいかず、アドバスを願い致します。目的は、ファイルを自動保存したいのです。 以下のように記載して、最後にカレントデレクトリイに「test.txt」と名前をつけて保存させたいのです。よろしくお願い致します。 Set objShell = WScript.CreateObject("WScript.Shell") WScript.Sleep 1000 objShell.Run "notepad.exe" objShell.SendKeys "hello "  objShell.SendKeys "%{F4}" objShell.SendKeys "%y"  

  • vbsでテキストファイル内の文字列検索

    初心者です。 テキストファイルを指定し、含まれる文字列を検索し、 結果表示したいと考えております。 色々探して、以下で作成したのですが、 うまく動いてくれません。 出来ましたら、テキストファイルの中の文字列の 一部分を指定して動作させたいと思っております。 どなたかご教示のほど宜しくお願い致します。 ---------------------------------------------------- Set WSHFso = CreateObject("Scripting.FileSystemObject") Set WshShell = WScript.CreateObject("WScript.Shell") Dim strSearchWord Set tmpFile = WSHFso.OpenTextFile("C:\AAA.txt") Do Until tmpFile.AtEndOfStream tmpLine = tmpFile.ReadLine strSearchWord = strSearchWord & tmpLine & vbcrlf Loop Dim SearchWord SearchWord = split(strSearchWord," ") if InStr(SearchWord(ix), "test")<>0 then WScript.Echo " testを含みます。" else WScript.Echo " testを含みません。" end if ----------------------------------------------------

  • “.vbs”のファイルが実行できない

    まったく初歩的な質問で申し訳ないのですが、拡張子がvbsのファイルが実行できません。 あるソフトをアンインストールするために実行したいんですが、ダブルクリックするとアプリケーションを選べみたいなのが出てきて、よく分かりません。 一応、そのvbsファイルをNotepadで開いてみたものを載せときます。 ---------------------------------------- On Error Resume Next set shell = CreateObject("WScript.Shell") set fso = CreateObject("Scripting.FileSystemObject") bcp="C:\Program Files\BCP" msg = msgbox("ブラクラでヤバイVer4をアンインストールしますか?",vbYesNo) if msg=vbNo then WScript.Quit if fso.FolderExists("C:\Program Files\BCP\")then fso.DeleteFolder bcp msgbox "フォルダの削除完了" end if shell.RegDelete("HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\ブラクラでヤバいでチェック\") shell.RegDelete("HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\ブラクラでヤバいを起動\") msgbox("アンインストールが完了しました。"&Chr(13)&Chr(13)&"By 禿親父") ---------------------------------------- どなたか分かる方いましたら教えてください。 よろしくお願いします。

  • VBS 既に開いているIEを操作

    以下のコードで既に開いているIEをアクティブ化しています。 Dim objIE set Shell=Wscript.CreateObject("Shell.Application") for each tmp in Shell.Windows if TypeName(tmp.document)="HTMLDocument" then if tmp.LocationURL="指定URL" then set objIE=tmp end if end if Next 指定URLの部分を完全に一致していた場合ではなく、一部が一致していたら、そのIEをアクティブ化するようにしたいです。可能ならば方法を教えて欲しいです。

  • VBSでコマンド発行したいが・・・

    VBscriptでうまいことテキストにあるコマンドを発行できません。 文が全然違う気がしてきて・・・・ Dim strCOM For i = 1 to 15 strCOM = "cmd /C cd /d D:\HEPPOKO & Format("0000", i) & .txt" Set WshShell = CreateObject("WScript.Shell") Set oExec = WshShell.Exec("strCOM ") DドライブにあるHEPPOKO0001.txt~HEPPOKO0015.txtを順次展開したいのですが・・・ どなたかご指示ください。

専門家に質問してみよう