1 (изменено: fokov.v.s, 2013-11-12 15:34:46)

Тема: vbs: поиск и замена файла

Господа. Прошу помощи.
дано рабочая группа. компы - win7

задача : нужен скрипт который бы находил в профиле текущего пользователя файл   name.mab.
после чего этот файл должен быть заменен копией взятой с  общей папки \\server\mab|

файл - адресная книга, и папка в которой она лежит(профиль пользователя Thunderbird )  у всех зовется по разному, ибо генерится случайным образом при старте Thunderbird .
Никаких проверок.  на дату в частности при замене  не требуется.

В принципе куда рыть я  в общем понимаю, но времени на это тупо нет.его мне не дали. Нужен скрипт.
Заранее огромное спасибо.

p/s
штатные плагины для синхрона адресной книги  на последних  версиях  птички не идут.

2 (изменено: fokov.v.s, 2013-11-12 17:39:06)

Re: vbs: поиск и замена файла

Dim fso1
Set fso1 = WScript.CreateObject("Scripting.FileSystemObject")
Set WshShell = CreateObject("WScript.Shell")
dim home
dim path
home = WshShell.ExpandEnvironmentStrings("%USERPROFILE%")
home =home & "\AppData\Roaming\Thunderbird\Profiles"


Set oFolders = fso1.GetFolder(home)

Set oSubfolders = oFolders.SubFolders

For Each oFolder In oSubFolders

            strListFolders = strListFolders & oFolder.Name & vbCrLf

Next   

path = home & "\" & strListFolders & "\"

MsgBox path

Const OverwriteExisting = True
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.CopyFile "C:\tmp\1\impab.mab" , path , OverwriteExisting


WScript.Quit 1

нашел вот такое решение. путь получается, только копирование почему-то не идет. видимо что то в ситаксисе копирования  не верно.

дает ошибку "путь не найден."


При том вывод MsgBox path дает абсолютно нормальный путь.  писать в папку права есть. В синтаксисе тоже верно.  C:\tmp\1\impab.mab    по указаному пути есть. Люди ткните в чем я ошибся?! Вывод скрипта  на картинке.

3

Re: vbs: поиск и замена файла

Если еще актуально, то копировать можно по разному, например, через объект файла:


srcPath = "C:\tmp\1\"
srcFile = "impab.mab"
Set oFile = fso.GetFile( srcPath & srcFile ) ' объект копируемого файла
On Error Resume Next
If oFile.Copy( path & srcFile ) <> 0 Then 
    MsgBox "Не удалось скопировать файл:" & vbCrLf & vbTab & srcPath & srcFile & vbCrLf & _
                                                "в файл:" & vbCrLf & vbTab & path & srcFile & vbCrLf
End IF
Set oFile = Nothing
On Error GoTo 0

WBR. Roman