Форум программистов, компьютерный форум, киберфорум
VBScript/JScript/WSH/WMI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/25: Рейтинг темы: голосов - 25, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 15.11.2017
Сообщений: 2

Доработка скрипта: ввод логина/пароля

15.11.2017, 10:42. Показов 4991. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Нужна помощь в допиливании скрипта.
Данный скрипт позволяет копировать папки и файлы в другие папки, ПК, или сетевые диски.....
Но есть проблема - папка которая будет копироваться находится на MAC OS, и для входа на нее требуется ввод логина и пароля (домен\логин + пароль), а папка в которую копируется находится на ftp, и для входа в нее тоже нужен логин и пароль. Нужна помощь в допиливании скрипта с вводом логина и пароля на папку с которой будет копироваться, и ввод логина и пароля на ftp куда будет копироваться.


Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
' ========== Script Information  ==========
' script name:   Fail_Copying
' version:       1.0
' date:          14.08.12
' autor:         MasterLin
' site:          [url]http://www.masterlin.ru[/url]
' description:   Скрипт копирует файлы, папки и подпапки с одного источника на несколько, в сети или локально (рассылка файлов). 
' При этом происходит проверка на наличие, доступность и время создания файлов. При отсутствии, либо старой версии файла
' происходит его копирование и замена на более новый.
 
'***********************************************
' Создание объектов оболочки и файловой системы
Set oShell = CreateObject("wscript.shell")
Set oFSO = CreateObject("Scripting.Filesystemobject")
Set WSNetwork = CreateObject("WScript.Network")
LogFolder = "C:\123\log" ' место расположения лог-файла
[B]StartFolder = "\\192.168.1.100\C$\Users\документы" ' откуда копируем
aEndFolder = array("ftp:\\192.168.1.200\документы") ' куда копируем[/B]
 
'***********************************************
' обнуление и описание счетчиков, используемых в скрипте
num_EndFolder = 0       '- общее число папок, места назначения для копируемых данных
num_EndFolder_0 = 0     '- не доступное кол-во папок из  num_EndFolder
num_files = 0           '- общее число обработанных файлов
num_files_copy = 0      '- из них скопировано с заменой на новую версию
err_files_copy = 0      '- из них не скопировано в результате ошибки при работе с num_files_copy
num_files_new = 0       '- из них скопировано новых файлов
err_files_new = 0       '- из них не скопировано в результате ошибки при работе с num_files_new
num_SubFolder = 0       '- обработано папок и подпапок
num_SubFolder_copy = 0  '- из них скопировано новых папок и подпапок
err_SubFolder = 0       '- из них не скопировано в результате ошибки при работе с num_SubFolder
 
'***********************************************
' Создание лог-файла
' Задаем имя лога
sLogName = "LogTemp_" & Date & "_" & Time
' Заменяем в имени все знаки на подчеркивания
sLogName = Replace(sLogName, ".", "_")
sLogName = Replace(sLogName, ":", "_")
sLogName = LogFolder & sLogName
' Создаем файл
Set oLogFile = oFSO.CreateTextFile(sLogName & ".log",true)
oLogFile.WriteLine "========== Script Information  ==========" & vbCrLf
oLogFile.WriteLine "script name:   Fail_Copying"
oLogFile.WriteLine "version:       1.0"
oLogFile.WriteLine "date:          10.08.12"
oLogFile.WriteLine "autor:         MasterLin"
oLogFile.WriteLine "site:          http://www.masterlin.ru" & vbCrLf
oLogFile.WriteLine "========== Запуск скрипта ==========" & vbCrLf
 
'***********************************************
 
Set oEndFolder = CreateObject("Scripting.FileSystemObject")
' Цикл для перебора папок "куда копируем"
For i=0 to UBound (aEndFolder)
    ' Счетчик кол-ва папок для копируемых данных
    num_EndFolder=num_EndFolder+1
    ' Проверяем доступность папки, в которую хотим произвести копирование
    If oEndFolder.FolderExists ( aEndFolder(i) ) Then 
        ' Записываем результат в лог
        oLogFile.Writeline "Папка " & "'" & aEndFolder(i) & "'" & " доступна для работы" & vbCrLf
        CopyFolder StartFolder,aEndFolder(i)
        ' Счетчик доступных для копирования папок
        ' удолил :)       
    else
        ' Записываем результат в лог
        oLogFile.Writeline
        oLogFile.Writeline "Папка " & "'" & aEndFolder(i) & "'" & " в настоящий момент не доступна. Работа с ней прекращена." & vbCrLf
        ' Дублируем сообщение, выводом предупреждения на экран
        WScript.Echo "Папка " & "'" & aEndFolder(i) & "'" & " в настоящий момент не доступна. Работа с ней прекращена."
        ' Счетчик недоступных для копирования папок
        num_EndFolder_0=num_EndFolder_0+1
    End if
Next
oLogFile.WriteLine "========== Отчет о копировании ==========" & vbCrLf
oLogFile.WriteLine "Было задано " & num_EndFolder & " папок, для копирования в них данных." 
oLogFile.WriteLine "Часть папок оказалась не доступна - " & num_EndFolder_0 & " шт. (см.логи выше)"
oLogFile.WriteLine "Скриптом было обработано - " & num_files & " файлов."
oLogFile.WriteLine "Из них скопировано с заменой - " & num_files_copy & " шт., не скопировано в результате ошибки - " & err_files_copy & " шт."
oLogFile.WriteLine "Из них скопировано новых файлов - " & num_files_new & " шт., не скопировано в результате ошибки - " & err_files_new & " шт."
oLogFile.WriteLine "Скриптом было обработано - " & num_SubFolder & " подпапок."
oLogFile.WriteLine "Из них скопировано новых подпапок - " & num_SubFolder_copy & " шт., не скопировано в результате ошибки - " & err_SubFolder & " шт."
oLogFile.WriteLine
oLogFile.WriteLine "========== Выполнение скрипта завершено ==========" & vbCrLf
WScript.Echo "Выполнение скрипта завершено."
 
Sub CopyFolder(sCopyFolder,sEndCopyFolder)
    ' Создание объекта Folder
    Set oFolder = oFSO.GetFolder(sCopyFolder)
    Set oEndCopyFolder = oFSO.GetFolder(sEndCopyFolder)
    ' Получение коллекции файлов
    Set colFiles = oFolder.Files
    ' Обработка каждого файла из коллекции
    For each oFile in colFiles
        oLogFile.Writeline "Дата создания копируемого файла:"
        oLogFile.Writeline oFile & vbTab & oFile.DateCreated
        ' Счетчик числа проверяемых файлов
        num_files=num_files+1
        ' Проверяем существует уже такой файл в папке, если его нет, то копируем. 
        ' Если есть, то проверяем его актуальность и заменяем более новым, если он устарел.
        If oFSO.FileExists(oFSO.BuildPath(oEndCopyFolder, oFile.Name)) Then 
            ' Записываем результат в лог
            oLogFile.Writeline "Такой файл уже существует в папке " & oEndCopyFolder
            ' Проверяем насколько это свежая копия файла, для этого сравниваем даты создания двух файлов
            oLogFile.Writeline "Проверяем актуальность копии:"
            ' Выгружаем полный путь к проверяемому файлу
            sFileEnd = oFSO.BuildPath(oEndCopyFolder, oFile.Name)
            ' Создаем объект File, для работы с этим файлом
            Set oFileEnd = oFSO.GetFile(sFileEnd)
            ' Сравниваем даты изменения файлов 
            If oFileEnd.DateLastModified < oFile.DateLastModified Then
                ' Проверяемый файл оказался устаревшим, поэтому заменяем его более новым
                oLogFile.Writeline "Копия файла устарела, заменяем его новым.     **********" & vbCrLf
                oFSO.CopyFile oFile, sEndCopyFolder & oFile.Name, True
                ' Проверка на наличие ошибок
                if err.Number <> 0 then
                    ' Запись сообщения об ошибке в лог
                    oLogFile.Writeline "-----> Error # " & CStr(Err.Number) & " " & Err.Description
                    ' Очистка ошибки
                    Err.Clear
                    ' Счетчик ошибок при замене файлов
                    err_files_copy=err_files_copy+1
                else
                    ' Счетчик файлов, которые были заменены на новые
                    num_files_copy=num_files_copy+1             
                End if
            else
                ' В этом случае копия прошла проверку, просто продолжаем работу скрипта далее
                oLogFile.Writeline "Копия актуальна. Продолжаем работу." & vbCrLf
            End if
        else
            ' Записываем результат в лог
            oLogFile.Writeline "Этот файл отсутствует в папке " & oEndCopyFolder & " Давайка его скопируем." & vbCrLf
            oFSO.CopyFile oFile, sEndCopyFolder & oFile.Name, True
            ' Проверка на наличие ошибок
            if err.Number <> 0 then
                ' Запись сообщения об ошибке в лог
                oLogFile.Writeline "-----> Error # " & CStr(Err.Number) & " " & Err.Description
                ' Очистка ошибки
                Err.Clear
                ' Счетчик ошибок при копировании новых файлов
                err_files_new=err_files_copy+1
            else
                ' Счетчик новых скопированных файлов
                num_files_new=num_files_copy+1              
            End if
        End if  
    Next
    ' Проверяем все папки и подпапки
    oLogFile.Writeline "Обрабатываем и копируем все подпапки из папки " & oEndCopyFolder & vbCrLf
    ' Получение коллекции подпапок
    Set colSubFolders = oFolder.SubFolders
    ' Обработка каждой подпапки
    For Each oSubFolder In colSubFolders
        oLogFile.Writeline "Проверяем подпапку " & oSubFolder
        ' Счетчик обработанных папок и подпапок
        num_SubFolder=num_SubFolder+1   
        ' Проверяем существует уже такая подпапка в папке, если ее нет, то копируем. 
        ' Если есть, то переходим к проверке файлов в подпапке.
        If oFSO.FolderExists(oFSO.BuildPath(oEndCopyFolder, oFSO.GetBaseName(oSubFolder.Path))) Then
            ' Записываем результат в лог
            oLogFile.Writeline "Такая подпапка уже существует в папке " & oEndCopyFolder
            oLogFile.Writeline "Проверяем все файлы в этой подпапке: "
            ' Выгружаем полный путь к проверяемоой подпапке
            sSubFolderEnd = oFSO.BuildPath(oEndCopyFolder, oFSO.GetBaseName(oSubFolder.Path)) & "" 
            ' Производим рекурсивный вызов процедуры копирования файлов - программа вызывает сама себя
            CopyFolder oSubFolder, sSubFolderEnd            
            ' oLogFile.Writeline
        else
            ' Записываем результат в лог         
            oLogFile.Writeline "Эта подпапка отсутствует в папке " & oEndCopyFolder & " Давайка ее скопируем." & vbCrLf
            oFSO.CopyFolder oSubFolder, sEndCopyFolder, True
            ' Проверка на наличие ошибок
            if err.Number <> 0 then
                ' Запись сообщения об ошибке в лог
                oLogFile.Writeline "-----> Error # " & CStr(Err.Number) & " " & Err.Description
                ' Очистка ошибки
                Err.Clear
                ' Счетчик ошибок при копировании новых папок и подпапок
                err_SubFolder=err_SubFolder+1
            else
                ' Счетчик новых скопированных папок и подпапок
                num_SubFolder_copy=num_SubFolder_copy+1         
            End if
        End if          
    Next
End Sub
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.11.2017, 10:42
Ответы с готовыми решениями:

VBS. Как зайти на роутер с заполнением формы ввода логина и пароля?
Здравствуйте! Вот стандартный вход, до формы Dim strUrl, oIE, oTag strUrl = &quot;http://192.168.0.99/&quot; Set oIE =...

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

MDT 2012 не показывает окно ввода логина и пароля
Всем привет. Устанавливаю Windows 7 Enterprise через WDS службы. Делаю так. Включаю компьютер, получает от DHCP ip адрес, загружается через...

5
2619 / 549 / 109
Регистрация: 21.03.2012
Сообщений: 1,051
15.11.2017, 20:27
unnamediv, технология WSH имеет в своём составе единственное штатное средство для альтернативной аутентификации при выполнении операций с объектами файловой системы - это метод MapNetworkDrive объекта WshNetwork. Он, вероятно, подойдёт для подключения к папке на MAC OS.
Для работы по FTP можно использовать штатную для "окошек" утилиту FTP.EXE, запуская её с помощью методов Exec или Run объекта WshShell и предавая ей в качестве аргумента предварительно подготовленный текстовый файл с набором нужных команд.
0
6981 / 2873 / 1104
Регистрация: 06.06.2017
Сообщений: 9,752
16.11.2017, 11:31
Цитата Сообщение от Dmitrii
Для работы по FTP можно использовать
Shell.Application + CopyHere.
0
2619 / 549 / 109
Регистрация: 21.03.2012
Сообщений: 1,051
16.11.2017, 12:40
FlasherX, цитирую:
Цитата Сообщение от unnamediv Посмотреть сообщение
... на ftp, и для входа в нее тоже нужен логин и пароль...
0
6981 / 2873 / 1104
Регистрация: 06.06.2017
Сообщений: 9,752
16.11.2017, 13:39
Dmitrii, я это видел. Что это меняет?
Visual Basic
1
If CreateObject("Shell.Application").NameSpace("ftp://USERNAME:PASSWORD@FTP_ADDRESS") is Nothing Then MsgBox "Нет доспупа!"
0
2619 / 549 / 109
Регистрация: 21.03.2012
Сообщений: 1,051
16.11.2017, 14:04
FlasherX, вы правы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.11.2017, 14:04
Помогаю со студенческими работами здесь

Командная строка: вход на сайт с вводом логина и пароля
Доброго времени суток. Хочу настроить автозапуск одного компьютера, что бы при включении он открывал определенный сайт.(с этим нет...

Забыть пароль удаленного доступа ,как заново сделать запрос логина и пароля?
В проводнике ввожу IP виртуалки, но она перемещена в другой домен и пишет что не найден комп. Как заново сделать запрос логина и пароля?...

Доработка ввода логина и пароля
procedure TForm2.Button1Click(Sender: TObject); var a,b:string ; begin a:='admin'; b:='123'; if (edit1.Text= a) and...

Ввод логина и пароля
Здравствуйте уважаемые, помогите с написанием кода, буду очень благодарен. Дан массив символов a , в котором в каждой строке первые...

Ввод логина и пароля
Доброго времени суток. Собираюсь написать программу, и для этого на одном сайте надо ввести логин и пароль, а я в этом вообще никак не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru