Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Прошу помощи в написании VBS-скрипта / 24 сообщений из 24, страница 1 из 1
09.01.2011, 17:15
    #37050238
Denn2011
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи в написании VBS-скрипта
Здравствуйте! Очень прошу помощи в написании скрипта! Имеется .BATник для выполнения некоторых операций с файлами, нужно написать тоже самое только в .VBS. Всем кто поможет заранее большое спасибо!

My_Batnik.BAT

@ECHO OFF
Start C:\My_Folder\My_Proga_1.exe /h /s >nul
set Timer1=300
ping -n %Timer1% 127.0.0.1 >nul
:Loop
set Timer2=2
ping -n %Timer2% 127.0.0.1 >nul
if not exist "*.mp3" goto Go
for /r %%i in (*.mp3) do ( "Rar.exe" m[f] -ep -inul -hp12345 -m5 -y "MP3_Files.rar" "%%i" )
:Go
if not exist "MP3_Files.rar" goto Loop
if exist "MP3_Files.rar" (
for %%i in ("MP3_Files.rar") do (
if %%~zi gtr 524288 (Start /wait My_Proga_2.exe)
) )
goto Loop

Предполагаю что начало должно выглядеть так:

My_Skript.VBS

on error resume next
WScript.Sleep (300000) 'Запуск первого таймера 300 сек
Set S = CreateObject("Wscript.Shell")
S.run "C:\My_Folder\My_Proga_1.exe /h /s",0 'Запуск первого файла
DO 'Запуск цикла
Тут?????
LOOP 'Окончание цикла

Как дальше не знаю, и в Google найти ничего не могу. Помогите плиз!!!!
...
Рейтинг: 0 / 0
09.01.2011, 17:46
    #37050258
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи в написании VBS-скрипта
Может попробовать описать ТЗ словами? А то батник не очень понятен. Почему, к примеру, файлы добавляются к архиву в цикле, а не скопом (лень разбирать ключи рара), ну и смысл остальных циклов и переходов не очень ясен
...
Рейтинг: 0 / 0
09.01.2011, 18:31
    #37050304
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи в написании VBS-скрипта
Да и оригинальный скрипт кривой как пьяная змея.
Зачем запускать стороннюю консольную программу в фоне, а потом сидеть и ждать жесткое количество секунд?
Использование ping вместо sleep умиляет.

Код: plaintext
1.
if not exist "MP3_Files.rar" goto Loop
if exist "MP3_Files.rar"
Тоже симпатичная пара строк...

Резюме: от переписывания этого кошмара на vbs, производительность только хуже станет. Сначала отладь оригинальный скрипт, потом пытайся переводами заниматься.
...
Рейтинг: 0 / 0
09.01.2011, 18:32
    #37050305
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи в написании VBS-скрипта
White OwlРезюме: от переписывания этого кошмара на vbs, производительность только хуже станет. Сначала отладь оригинальный скрипт, потом пытайся переводами заниматься.Ну собственно, можно сразу на VBS написать не криво, почему нет? Только ТЗ нужно
...
Рейтинг: 0 / 0
09.01.2011, 18:36
    #37050309
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи в написании VBS-скрипта
Shocker.ProWhite OwlРезюме: от переписывания этого кошмара на vbs, производительность только хуже станет. Сначала отладь оригинальный скрипт, потом пытайся переводами заниматься.Ну собственно, можно сразу на VBS написать не криво, почему нет? Только ТЗ нужноТеоретически можно. Но только в случае активного чтения документации и минимальной логики. Ни того, ни другого я тут не вижу. Посмотри на его "My_Skript.VBS"
...
Рейтинг: 0 / 0
09.01.2011, 18:40
    #37050312
Denn2011
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи в написании VBS-скрипта
Shocker.ProМожет попробовать описать ТЗ словами? А то батник не очень понятен. Почему, к примеру, файлы добавляются к архиву в цикле, а не скопом (лень разбирать ключи рара), ну и смысл остальных циклов и переходов не очень ясен

My_Proga1.exe - Эта прога записывает с микрофона файлы .wav и конвертирует в .MP3. Затем скрипт должен проверить, имеется ли в текущей папке архив "voi.rar", если да, и размер его превышает примерно "500 Мб", то запускается My_Proga2.exe, которая перемещает архив voi.rar в нужное место. Новые файлы постоянно прибывают, для этого и нужен цикл. Батник прописан в автозагрузке, первый Таймер для того чтобы вся эта канитель запустилась через 5 мин после старта компа. Второй Таймер в 2 сек, нужен просто для того, чтобы батник не нагружал процессор.

Ключи:
m[f] - Переместить в архив [только файлы]
-ep - Исключить пути из имен
-inul - Запретить вывод всех сообщений
-ph - Установить пароль
-m5 - Метод сжатия (5 Максимальный)
.y - Отвечать 'Да' на все запросы
...
Рейтинг: 0 / 0
09.01.2011, 18:41
    #37050313
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи в написании VBS-скрипта
White OwlТеоретически можно. Но только в случае активного чтения документации и минимальной логики. Ни того, ни другого я тут не вижу. Посмотри на его "My_Skript.VBS"
да ладно тебе, это ж не лентяй-студент, я на свой код десяти-пятнадцатилетней давности тоже без слез смотреть не могу.... ладно, подождем ТЗ
...
Рейтинг: 0 / 0
09.01.2011, 18:43
    #37050316
Denn2011
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи в написании VBS-скрипта
White OwlДа и оригинальный скрипт кривой как пьяная змея.
Зачем запускать стороннюю консольную программу в фоне, а потом сидеть и ждать жесткое количество секунд?
Использование ping вместо sleep умиляет.

Код: plaintext
1.
if not exist "MP3_Files.rar" goto Loop
if exist "MP3_Files.rar"
Тоже симпатичная пара строк...

Резюме: от переписывания этого кошмара на vbs, производительность только хуже станет. Сначала отладь оригинальный скрипт, потом пытайся переводами заниматься.

Ну собственно этот батник работает без проблем.
...
Рейтинг: 0 / 0
09.01.2011, 18:45
    #37050317
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи в написании VBS-скрипта
Denn2011,

Для работы с файлами из скрипта обычно используется FSO - FileSystemObject, предлагаю для начала поискать в этом форуме по слову FileSystemObject - найдется много примеров.
...
Рейтинг: 0 / 0
09.01.2011, 19:08
    #37050345
Denn2011
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи в написании VBS-скрипта
White OwlИспользование ping вместо sleep умиляет.
А разве в XP без стороних утилит сработает "sleep" ??? Я пробовал, у меня только под Вистой такой батник работал, поэтому и заменил на ping
...
Рейтинг: 0 / 0
09.01.2011, 19:33
    #37050374
Ципихович Эндрю
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи в написании VBS-скрипта
Denn2011,
'объявляем API функцию для производсва в случае необходимости паузы
'паузу вызовем: Sleep 1000 выражается в миллисекундах, 1000 миллисекунд это 1 секунда
Public Declare Sub Sleep Lib "kernel32" (ByVal lMilliseconds As Long)
...
Рейтинг: 0 / 0
09.01.2011, 22:01
    #37050495
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи в написании VBS-скрипта
Ципихович Эндрю,

Не лезь, куда не понимаешь, а то 220В не заставят себя ждать
...
Рейтинг: 0 / 0
10.01.2011, 01:32
    #37050622
Прошу помощи в написании VBS-скрипта
Denn2011,
чем батник не угодил?
примерный перевод Вашего .bat на .vbs (не тестировал)
Код: plaintext
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.
option explicit

' строка запуска для My_Proga_1.exe
const sProga1Run="""C:\My_Folder\My_Proga_1.exe"" /h /s"

' строка запуска для My_Proga_2.exe
const sProga2Run="My_Proga_2.exe"

' максимальный размер архива
const iMaxArkhSize=  524288 

dim idelay, boolExists
dim objFSO, objWSHShell, objFolder, objFile
dim sWorkingDir, sArkhPath, sRarRun

' величина паузы в цикле
idelay=  2000 

' папка из которой запущен скрипт
sWorkingDir= replace(wscript.ScriptFullName, "\" & wsctipt.ScriptName, "")

' полный путь к архиву
sArkhPath= sWorkingDir & "\MP3_Files.rar"

' строка запуска для rar.exe
sRarRun="rar.exe m[f] -ep -inul -hp12345 -m5 -y """ & sArkhPath &  """ *.mp3"

' объект: Scripting.FileSysytemObject
set objFSO= CreateObject("Scripting.FileSysytemObject")

' объект: WScript.Shell
set objWSHShell= CreateObject("WScript.Shell")

' объект: папка из которой запуцщен скрипт
set objFolder = setFSO.GetFolder(sWorkingDir)

' запуск My_Proga_1.exe без ожидания завершения и пауза в 5 минут
objWSHShell.Run sProga1Run, 1 ,false
wscript.sleep  300000 

do 
'  ?есть *.mp3
'   да: запаковать   
   ' флаг наличия .mp3 фалов
   boolExists= false
   
   ' для каждого файла в папке objFolder: если имя файла оканчивается на ".mp3"
   ' установить флаг boolExists, выйти из цикла for each
   for each objFile in objFolder
     if right(objFile.Name, 4 )=".mp3" then 
	   boolExists=true
	   exit for 
     end if 	 
   next
   
   ' если установлен флаг boolExists запустить rar.exe, дождаться окончания его работы
   if boolExists then objWSHShell.Run sRarRun, 1 ,true
   
'   ?есть MP3_Files.rar
'   да: ?размер MP3_Files.rar > 524288
'       да: запустить /wait My_Proga_2.exe
' REM наличие архива можно также проверить косвенно - по флагу boolExists
    if objFSO.FileExists(sArkhPath) then
        set objFile= objFSO.GetFile(sArkhPath)
        if objFile.Size > iMaxArkhSize then objWSHShell.Run sProga2Run, 1 ,true
    end if
   
'   пауза 
   wscript.sleep idelay

' завершить цикл при наличии в папке из которой запущен скрипт
' файла с именем STOPLOOPING.FLAG ( фича )
   boolExists= objFSO.FileExists(sWorkingDir & "\STOPLOOPING.FLAG")
loop until boolExists

wscript.quit
...
Рейтинг: 0 / 0
10.01.2011, 06:56
    #37050666
Ципихович Эндрю
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи в написании VBS-скрипта
Игорь ГорбоносЦипихович Эндрю,

Не лезь, куда не понимаешь, а то 220В не заставят себя ждать

Так я вроде нигде не понимаю и что теперь, а чем на его вопрос о слипе мой ответ не устроил???, я уже в резиновом костюме на всякий случай
...
Рейтинг: 0 / 0
11.01.2011, 22:57
    #37053558
Denn2011
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи в написании VBS-скрипта
пробуй камнемDenn2011,
чем батник не угодил?
+
примерный перевод Вашего .bat на .vbs (не тестировал)
Код: plaintext
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.
option explicit

' строка запуска для My_Proga_1.exe
const sProga1Run="""C:\My_Folder\My_Proga_1.exe"" /h /s"

' строка запуска для My_Proga_2.exe
const sProga2Run="My_Proga_2.exe"

' максимальный размер архива
const iMaxArkhSize=  524288 

dim idelay, boolExists
dim objFSO, objWSHShell, objFolder, objFile
dim sWorkingDir, sArkhPath, sRarRun

' величина паузы в цикле
idelay=  2000 

' папка из которой запущен скрипт
sWorkingDir= replace(wscript.ScriptFullName, "\" & wsctipt.ScriptName, "")

' полный путь к архиву
sArkhPath= sWorkingDir & "\MP3_Files.rar"

' строка запуска для rar.exe
sRarRun="rar.exe m[f] -ep -inul -hp12345 -m5 -y """ & sArkhPath &  """ *.mp3"

' объект: Scripting.FileSysytemObject
set objFSO= CreateObject("Scripting.FileSysytemObject")

' объект: WScript.Shell
set objWSHShell= CreateObject("WScript.Shell")

' объект: папка из которой запуцщен скрипт
set objFolder = setFSO.GetFolder(sWorkingDir)

' запуск My_Proga_1.exe без ожидания завершения и пауза в 5 минут
objWSHShell.Run sProga1Run, 1 ,false
wscript.sleep  300000 

do 
'  ?есть *.mp3
'   да: запаковать   
   ' флаг наличия .mp3 фалов
   boolExists= false
   
   ' для каждого файла в папке objFolder: если имя файла оканчивается на ".mp3"
   ' установить флаг boolExists, выйти из цикла for each
   for each objFile in objFolder
     if right(objFile.Name, 4 )=".mp3" then 
	   boolExists=true
	   exit for 
     end if 	 
   next
   
   ' если установлен флаг boolExists запустить rar.exe, дождаться окончания его работы
   if boolExists then objWSHShell.Run sRarRun, 1 ,true
   
'   ?есть MP3_Files.rar
'   да: ?размер MP3_Files.rar > 524288
'       да: запустить /wait My_Proga_2.exe
' REM наличие архива можно также проверить косвенно - по флагу boolExists
    if objFSO.FileExists(sArkhPath) then
        set objFile= objFSO.GetFile(sArkhPath)
        if objFile.Size > iMaxArkhSize then objWSHShell.Run sProga2Run, 1 ,true
    end if
   
'   пауза 
   wscript.sleep idelay

' завершить цикл при наличии в папке из которой запущен скрипт
' файла с именем STOPLOOPING.FLAG ( фича )
   boolExists= objFSO.FileExists(sWorkingDir & "\STOPLOOPING.FLAG")
loop until boolExists

wscript.quit


пробуй камнемОгромное спасибо! Это именно то что мне было нужно, теперь хоть есть наглядный пример! Ещё раз большое вам спасибо.
...
Рейтинг: 0 / 0
11.01.2011, 23:19
    #37053574
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи в написании VBS-скрипта
Ципихович Эндрюа чем на его вопрос о слипе мой ответ не устроил???, я уже в резиновом костюме на всякий случайТем что в скриптах нельзя декларировать, а следовательно использовать API функции
...
Рейтинг: 0 / 0
12.01.2011, 01:42
    #37053681
Прошу помощи в написании VBS-скрипта
Denn2011,
чем же всё-таки не угодил батник?
...
Рейтинг: 0 / 0
12.01.2011, 01:47
    #37053684
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи в написании VBS-скрипта
пробуй камнемDenn2011,
чем же всё-таки не угодил батник?
вероятно тем, что "шумно" работает?
то бишь досовское окошко висит...
...
Рейтинг: 0 / 0
12.01.2011, 22:59
    #37055621
Denn2011
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи в написании VBS-скрипта
Shocker.Proпробуй камнемDenn2011,
чем же всё-таки не угодил батник?
вероятно тем, что "шумно" работает?
то бишь досовское окошко висит...
Да, шумно работает, но это пол беды. Я его скомпилировал в .EXE, шум исчез, но в диспетчере висит сразу три процесса, CMD.EXE, PING.EXE, и My_Batnik.EXE, и все вместе прилично кушают память. Так вот я и решил попробовать реализовать это с помощью скрипта.
...
Рейтинг: 0 / 0
12.01.2011, 23:06
    #37055628
Denn2011
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи в написании VBS-скрипта
пробуй камнемВот эти две строки пришлось подправить:
' объект: папка из которой запуцщен скрипт
set objFolder= setFSO.GetFolder(sWorkingDir)
set objFolder= objFSO.GetFolder(sWorkingDir)

for each objFile in objFolder
for each objFile in objFolder.Files
...
Рейтинг: 0 / 0
12.01.2011, 23:24
    #37055644
Прошу помощи в написании VBS-скрипта
Denn2011,
и как у .vbs с аппетитом по сравнению с .bat ? Неужели меньше кушает памяти ?
...
Рейтинг: 0 / 0
13.01.2011, 01:56
    #37055760
Denn2011
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи в написании VBS-скрипта
пробуй камнемDenn2011,
и как у .vbs с аппетитом по сравнению с .bat ? Неужели меньше кушает памяти ?
Ну в общем сегодня протестировал Ваш скрипт, результаты получились такие:

Skript.VBS (тот что Вы написали) = 8 256 Кб

My_Batnik.EXE (мой скомпилированный батник) = 6 836 Кб
CMD.EXE = 5 128 Кб
Ping.EXE = 1 704 Кб
Всего = 13 668 Кб

Я думаю результат не плохой. Я доволен.
Ещё раз спасибо Вам за помощь!
...
Рейтинг: 0 / 0
13.01.2011, 02:11
    #37055765
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи в написании VBS-скрипта
Denn2011,

Неправильно ты память считаешь.
...
Рейтинг: 0 / 0
13.01.2011, 19:15
    #37057649
Denn2011
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи в написании VBS-скрипта
White OwlDenn2011,

Неправильно ты память считаешь.

Подскажи как правильно.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Прошу помощи в написании VBS-скрипта / 24 сообщений из 24, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]