Форум программистов, компьютерный форум, киберфорум
VBScript/JScript/WSH/WMI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 Аватар для Leningradeс
14 / 14 / 3
Регистрация: 03.03.2011
Сообщений: 435

bat скрестить с vbs

25.10.2012, 11:35. Показов 2134. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, не получается скрестить .bat для резервного копирования и архивирования с .vbs создающим IEprogbar...
Вообщем проблема в том что когда я приписываю запускать test.bat, он вызывается 100500 раз. Я конечно понимаю что так и будет, пока он не завершит процедуру, но как сделать что бы вызвалось 1 раз?
Вторая проблема в том что мне еще и упаковать в rar надо, прогресс-бар вмешивается в процесс работы winrara и ошибки вылетают, что файлы заняты другим приложением.
А вообще без этой прогресс бар все хорошо работает, создает папку, копирует в неё все, архивирует на съемник и подчищает то что заархивировал. Но хотелось бы интерфейсное отображение процесса.

test.bat

Bash
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
@echo off
set dd=%DATE%
set tt=%TIME%
 
set /a ddd=1%dd:~0,2%-100
IF %ddd% LSS 10 (
  SET day=0%ddd%) else (
  SET day=%ddd%)
set month=%dd:~3,2%
set year=%dd:~6,4%
 
set /a ttt=%tt:~0,2%
 
IF %ttt% LSS 10 (
  SET hour=0%ttt%) else (
  SET hour=%ttt%)
 
SET min=%tt:~3,2%
SET sec=%tt:~6,2%
SET /a dddd=%day%-1
 
 
mkdir D:\%day%.%month%.%year%_%hour%.%min%_TEST
xcopy \\comp\net_folder\folder\*.TXT D:\%day%.%month%.%year%_%hour%.%min%_TEST\TXT\ /D:%month%-%dddd%-%year%
xcopy \\comp\net_folder\folder\*.DOC D:\%day%.%month%.%year%_%hour%.%min%_TEST\DOC\ /D:%month%-%dddd%-%year%
start winrar a TEST_ D:\%day%.%month%.%year%_%hour%.%min%_TEST
echo %day%.%month%.%year% %hour%.%min% - %date% %time:~,5% error_code = (%errorlevel%): TEST >> G:\log.txt
exit


progbar.vbs

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
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
Dim bar, i
Set bar = new IEProgBar
With bar
    .Move -1, -1, 500, -1
    .Units = 30
    .Show
    WScript.Sleep 500
    .Caption = "Выполнение: 0%..."
    WScript.Sleep 500
    For i = 0 to 29
    'Начало моего кода
    Set WshShell = CreateObject("WScript.Shell")
    RetCode = WshShell.Run("test.bat", 0, False)
    'Конец моего кода
        .Caption = "Выполнение: " & Round((i+1)*100/30, 0) & "%..."
        .Advance
    Next
End With
WScript.Sleep 1000
Set bar = Nothing
 
'--- //////////////////////////////////////////////////////////////////////////////////////////////
'
'Класс IEProgBar, который может быть вставлен в любой скрипт.
'Чтобы создать индикатор прогресса, напишите:
'
'Dim ob
'Set ob = New IEProgBar
'
'Индикатор прогресса создается в виде HTML файла,
'который записывается в директорию временных файлов и открывается оттуда.
'
'Свойства и методы:
'
'Методы -
'
'    Show - показывает индикатор прогресса, записывая HTML файл, открывая его в IE и делая IE видимым.
'    Advance - заполняет индикатор прогресса на одну ячейку.
'    Move(Left, Top, Width, Height) - Изменение размеров и/или позиции окна.
'        Используйте -1 для любого параметра, который вы не хотите менять.
'        Размер по умолчанию - 400x120, положение окна определяет Windows.
'    CleanIETitle - удаляет параметры настройки реестра, отвечающие за заголовок IE, делая заголовок IE более компактным.
'        Это - глобальное изменение для IE, которое необратимо этим сценарием (тем не менее, это достаточно безопасное изменение).
'
'Свойства -
'
'    BackColor - 6-символьный шестнадцатеричный код цвета фона. По умолчанию - "E0E0E4".
'    TextColor - 6-символьный шестнадцатеричный код цвета текста. По умолчанию - "000000".
'    ProgressColor - 6-символьный шестнадцатеричный код цвета индикатора прогресса. По умолчанию - "0000A0".
'    Title - текст заголовка окна. По умолчанию - "Ожидание".
'    Caption - текст надписи в окне. По умолчанию - "Подождите..."
'    Units - количество единиц индикатора прогресса. По умолчанию - 20.
'
'--- ///////////////////////////////////////////////////////////////////////////////////////////////
 
'--------  КЛАСС IEProgBar ----------------------------------
Class IEProgBar
    Private FSO, IE, BCol, TCol, ProgCol, ProgNum, ProgCaption, Q2, sTemp, iProg, ProgTitle
 
    Private Sub Class_Initialize()
        On Error Resume Next
        Set FSO = CreateObject("Scripting.FileSystemObject")
        sTemp = FSO.GetSpecialFolder(2)
        Set IE = CreateObject("InternetExplorer.Application") 
        With IE
            .AddressBar = False
            .menubar = False
            .ToolBar = False
            .StatusBar = False
            .width = 400
            .height = 120
            .resizable = True
        End With    
        BCol = "E0E0E4"              'цвет фона по умолчанию
        TCol = "000000"              'цвет текста надписи по умолчанию
        ProgCol = "0000A0"           'цвет индикатора прогресса по умолчанию
        ProgNum = 20                 'количество единиц индикатора прогресса по умолчанию
        ProgCaption = "Подождите..." 'надпись по умолчанию
        ProgTitle = "Ожидание"       'заголовок окна по умолчанию
        Q2 = chr(34) 'двойная кавычка (для HTML-вёрстки)
        iProg = 0                    'заполнение индикатора прогресса
    End Sub
 
    Private Sub Class_Terminate()
        On Error Resume Next
        IE.Quit
        Set IE = Nothing
        Set FSO = Nothing
    End Sub
 
    Public Sub Show()
        Dim s, i, TS
        On Error Resume Next
        s = "<HTML><HEAD><TITLE>" & ProgTitle & "</TITLE></HEAD>"
        s = s & "<BODY SCROLL=" & Q2 & "NO" & Q2 & " BGCOLOR=" & Q2 & "#" & BCol & Q2 & " TEXT=" & Q2 & "#" & TCol & Q2 & ">"
        If (ProgCaption <> "") Then
            s = s & "<FONT FACE=" & Q2 & "arial" & Q2 & " SIZE=2><LABEL ID=" & Q2 & "Cap1" & Q2 & ">" & ProgCaption & "</LABEL></FONT><BR><BR>"
        Else
            s = s & "<BR>"
        End If
        s = s & "<TABLE BORDER=1><TR><TD><TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0><TR>"
        For i = 1 to ProgNum
            s = s & "<TD WIDTH=16 HEIGHT=16 ID=" & Q2 & "P" & Q2 & ">"
        Next
        s = s & "</TR></TABLE></TD></TR></TABLE><BR><BR></BODY></HTML>"         
        Set TS = FSO.CreateTextFile(sTemp & "\iebar1.html", True)
        TS.Write s
        TS.Close
        Set TS = Nothing
        IE.Navigate "file:///" & sTemp & "\iebar1.html"
        IE.visible = True
    End Sub
   
    'Метод Advance раскрашивает одну ячейку индикатора прогресса.
    'Переменная iProg отслеживает, сколько ячеек было раскрашено.
    'Каждая ячейка индикатора прогресса является тегом <TD> с идентификатором ID="P".
    'К этим тегам можно обратиться через Document.All.Item.
    Public Sub Advance()
        On Error Resume Next
        If (iProg < ProgNum) and (IE.Visible = True) Then
            IE.Document.All.Item("P", (iProg)).bgcolor = Q2 & "#" & ProgCol & Q2
            iProg = iProg + 1
        End If   
    End Sub
 
    'Изменение размеров и/или позиции окна. Используйте -1 для любого параметра, который вы не хотите менять.
    Public Sub Move(PixLeft, PixTop, PixWidth, PixHeight)
        On Error Resume Next
        If (PixLeft > -1) Then IE.Left = PixLeft
        If (PixTop > -1) Then IE.Top = PixTop
        If (PixWidth > 0) Then IE.Width = PixWidth
        If (PixHeight > 0) Then IE.Height = PixHeight
    End Sub
 
    'Удаление параметров настройки реестра, отвечающих за заголовок IE.
    'Это изменение не будет иметь эффекта при первом использовании, поскольку экземпляр IE уже был создан перед вызовом метода.
    Public Sub CleanIETitle()
        Dim sR1, sR2, SH
        On Error Resume Next
        sR1 = "HKLM\Software\Microsoft\Internet Explorer\Main\Window Title"
        sR2 = "HKCU\Software\Microsoft\Internet Explorer\Main\Window Title"
        Set SH = CreateObject("WScript.Shell")
        SH.RegWrite sR1, "", "REG_SZ"
        SH.RegWrite sR2, "", "REG_SZ"
        Set SH = Nothing
    End Sub
 
    '------------- Установка цвета фона: ---------------------
 
    Public Property Let BackColor(sCol)
        If (TestColor(sCol) = True) Then BCol = sCol
    End Property
 
    '------------- Установка цвета текста: --------------------
 
    Public Property Let TextColor(sCol)
        If (TestColor(sCol) = True) Then TCol = sCol
    End Property
 
    '------------- Установка цвета индикатора прогресса: ------
 
    Public Property Let ProgressColor(sCol)
        If (TestColor(sCol) = True) Then ProgCol = sCol
    End Property
 
    '------------- Установка заголовкеа окна: ------------------
 
    Public Property Let Title(sCap)
        ProgTitle = sCap
    End Property
 
    '------------- Установка текста: ----------------------------
 
    Public Property Let Caption(sCap)
        On Error Resume Next
        ProgCaption = sCap
        IE.Document.parentWindow.Cap1.innerText = sCap
    End Property
 
    '----- Установка количества единиц индикатора прогресса: -----
 
    Public Property Let Units(iNum)
        ProgNum = iNum
    End Property
 
    'Проверка корректности заданного цвета: цвет должен содержать 6 символов 0-9 или A-F.
    'Возвращается True (цвет корректен) или False.
    Private Function TestColor(Col6)
        Dim iB, sB, iB2, Boo1
        On Error Resume Next
        TestColor = False
        If (Len(Col6) <> 6) Then Exit Function
        For iB = 1 to 6
            sB = Mid(Col6, iB, 1)
            iB2 = Asc(UCase(sB))
            If ((iB2 > 47) and (iB2 < 58)) or ((iB2 > 64) and (iB2 < 71)) Then
                Boo1 = True
            Else
                Boo1 = False
                Exit For
            End If
        Next
        If (Boo1 = True) Then TestColor = True
    End Function
End Class
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.10.2012, 11:35
Ответы с готовыми решениями:

Запуск bat из VBS
Добрый день! Я не програмист, поэтому обращаюсь к Вам с данным вопросом: Есть скрипт для запуска программ из под администратора с известным...

Нужно конвертировать BAT в VBS
Добрый день. Нужен VBS для выполнения этих команд, и что бы, если указанные процессы не запущены, то недолжны выскакивать окна об...

Инсталяция приложения BAT -> VBS
Добрый день. Имеется test.BAT файл, который вызывается из VBS, следующего содержания: &quot;c:\prog\prog.exe&quot; --config...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.10.2012, 11:35
Помогаю со студенческими работами здесь

текущая загрузка cp,ram,swap на bat/vbs
собственно сабж, желательно чтобы работало меньше 500мс

Создание BAT-файла с помощью VBS-скрипта
Всем большой привет! Помогите создать файл bat через скрипт vbs и записать в него код. пример кода: net use X: /del /yes net use X:...

Запуск bat с через VBS с правами администратора
Set WshShell = CreateObject(&quot;WScript.Shell&quot;) WshShell.Run &quot;service.bat&quot;, 1, false Можно ли сделать тоже самое, но с правами...

Создать BAT-файл с помощью VBS-файла
Привет всем. Интересует вопрос, возможно ли создать bat файл напрямую через VBS файл и вписать туда определенный код? Я научился...

Друзья нужен скрипт на bat или на vbs для определения названия ПК
Друзья нужен скрипт vbs, чтобы она в txt определяла следующие характеристик в txt пк: Компьютер: полное имя: операционную систему: ...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru