1

Тема: vbs: заменить адресную книгу в Thunderbird

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

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

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

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

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



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    по указному пути есть. Люди ткните в чем я ошибся?! Вывод скрипта  на картинке.

2

Re: vbs: заменить адресную книгу в Thunderbird

блин после  strListFolders он переводит строку те получается

C:\Users\vf\AppData\Roaming\Thunderbird\Profiles\18qod5oo.default
\

...................

заткнулся на борьбе с этим

3

Re: vbs: заменить адресную книгу в Thunderbird

Const OverwriteExisting = True

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 = oFolder.Name

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

    MsgBox path

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

Next   


WScript.Quit 1
Щт Уккщк Куыгьу Туче
’ҐЄгй п Є®¤®ў п бва Ёж : 1251

4

Re: vbs: заменить адресную книгу в Thunderbird

fokov.v.s пишет:

блин после  strListFolders он переводит строку те получается

C:\Users\vf\AppData\Roaming\Thunderbird\Profiles\18qod5oo.default
\

...................

заткнулся на борьбе с этим

;-)
А зачем было писать "& vbCrLf", какова причина?
См. omegastripes

5 (изменено: fokov.v.s, 2013-11-13 09:11:18)

Re: vbs: заменить адресную книгу в Thunderbird

max7 пишет:
fokov.v.s пишет:

блин после  strListFolders он переводит строку те получается

C:\Users\vf\AppData\Roaming\Thunderbird\Profiles\18qod5oo.default
\

...................

заткнулся на борьбе с этим

;-)
А зачем было писать "& vbCrLf", какова причина?
См. omegastripes

Да я признаться не знаю значение этого операнда. Если не сложно просветите. а вывернулся так: порезал лишние пробелы

LTrim(strListFolders) 

  полностью код выкину чуть позже когда причешу.

6

Re: vbs: заменить адресную книгу в Thunderbird

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

Dim fso1
Dim FSO
Set fso1 = WScript.CreateObject("Scripting.FileSystemObject")
Set objFSO = 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
Next   
strListFolders = LTrim(strListFolders)
strPath = home & "\" & strListFolders & "\"
Const OverwriteExisting = True
objFSO.CopyFile "\\FILESRV2\share\bat\impab.mab" , strPath , OverwriteExisting
Wscript.Echo "Адресная книга успешно обновлена." 

Может и коряво немного. но зато работает))
Да предполагается что адресная книга у всех зовется одинаково.

7

Re: vbs: заменить адресную книгу в Thunderbird

fokov.v.s пишет:

            strListFolders = strListFolders & oFolder.Name

2fokov.v.s Если в папке home более одной подпапки, то в переменную strListFolders, полученную таким образом, будет записан несуществующий путь, намешанный из имен всех подпапок. В этом случае objFSO.CopyFile выдаст ошибку. Посмотрите мой предыдущий пост - objFSO.CopyFile должен быть внутри цикла.

Щт Уккщк Куыгьу Туче
’ҐЄгй п Є®¤®ў п бва Ёж : 1251