powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Прошу помощи в написании VBS-скрипта
24 сообщений из 24, страница 1 из 1
Прошу помощи в написании VBS-скрипта
    #37050238
Denn2011
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте! Очень прошу помощи в написании скрипта! Имеется .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
Прошу помощи в написании VBS-скрипта
    #37050258
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может попробовать описать ТЗ словами? А то батник не очень понятен. Почему, к примеру, файлы добавляются к архиву в цикле, а не скопом (лень разбирать ключи рара), ну и смысл остальных циклов и переходов не очень ясен
...
Рейтинг: 0 / 0
Прошу помощи в написании VBS-скрипта
    #37050304
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да и оригинальный скрипт кривой как пьяная змея.
Зачем запускать стороннюю консольную программу в фоне, а потом сидеть и ждать жесткое количество секунд?
Использование ping вместо sleep умиляет.

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

Резюме: от переписывания этого кошмара на vbs, производительность только хуже станет. Сначала отладь оригинальный скрипт, потом пытайся переводами заниматься.
...
Рейтинг: 0 / 0
Прошу помощи в написании VBS-скрипта
    #37050305
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlРезюме: от переписывания этого кошмара на vbs, производительность только хуже станет. Сначала отладь оригинальный скрипт, потом пытайся переводами заниматься.Ну собственно, можно сразу на VBS написать не криво, почему нет? Только ТЗ нужно
...
Рейтинг: 0 / 0
Прошу помощи в написании VBS-скрипта
    #37050309
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProWhite OwlРезюме: от переписывания этого кошмара на vbs, производительность только хуже станет. Сначала отладь оригинальный скрипт, потом пытайся переводами заниматься.Ну собственно, можно сразу на VBS написать не криво, почему нет? Только ТЗ нужноТеоретически можно. Но только в случае активного чтения документации и минимальной логики. Ни того, ни другого я тут не вижу. Посмотри на его "My_Skript.VBS"
...
Рейтинг: 0 / 0
Прошу помощи в написании VBS-скрипта
    #37050312
Denn2011
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Прошу помощи в написании VBS-скрипта
    #37050313
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlТеоретически можно. Но только в случае активного чтения документации и минимальной логики. Ни того, ни другого я тут не вижу. Посмотри на его "My_Skript.VBS"
да ладно тебе, это ж не лентяй-студент, я на свой код десяти-пятнадцатилетней давности тоже без слез смотреть не могу.... ладно, подождем ТЗ
...
Рейтинг: 0 / 0
Прошу помощи в написании VBS-скрипта
    #37050316
Denn2011
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White OwlДа и оригинальный скрипт кривой как пьяная змея.
Зачем запускать стороннюю консольную программу в фоне, а потом сидеть и ждать жесткое количество секунд?
Использование ping вместо sleep умиляет.

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

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

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

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

Не лезь, куда не понимаешь, а то 220В не заставят себя ждать
...
Рейтинг: 0 / 0
Прошу помощи в написании VBS-скрипта
    #37050622
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
Прошу помощи в написании VBS-скрипта
    #37050666
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь ГорбоносЦипихович Эндрю,

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

Так я вроде нигде не понимаю и что теперь, а чем на его вопрос о слипе мой ответ не устроил???, я уже в резиновом костюме на всякий случай
...
Рейтинг: 0 / 0
Прошу помощи в написании VBS-скрипта
    #37053558
Denn2011
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пробуй камнем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
Прошу помощи в написании VBS-скрипта
    #37053574
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрюа чем на его вопрос о слипе мой ответ не устроил???, я уже в резиновом костюме на всякий случайТем что в скриптах нельзя декларировать, а следовательно использовать API функции
...
Рейтинг: 0 / 0
Прошу помощи в написании VBS-скрипта
    #37053681
Denn2011,
чем же всё-таки не угодил батник?
...
Рейтинг: 0 / 0
Прошу помощи в написании VBS-скрипта
    #37053684
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пробуй камнемDenn2011,
чем же всё-таки не угодил батник?
вероятно тем, что "шумно" работает?
то бишь досовское окошко висит...
...
Рейтинг: 0 / 0
Прошу помощи в написании VBS-скрипта
    #37055621
Denn2011
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Proпробуй камнемDenn2011,
чем же всё-таки не угодил батник?
вероятно тем, что "шумно" работает?
то бишь досовское окошко висит...
Да, шумно работает, но это пол беды. Я его скомпилировал в .EXE, шум исчез, но в диспетчере висит сразу три процесса, CMD.EXE, PING.EXE, и My_Batnik.EXE, и все вместе прилично кушают память. Так вот я и решил попробовать реализовать это с помощью скрипта.
...
Рейтинг: 0 / 0
Прошу помощи в написании VBS-скрипта
    #37055628
Denn2011
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пробуй камнемВот эти две строки пришлось подправить:
' объект: папка из которой запуцщен скрипт
set objFolder= setFSO.GetFolder(sWorkingDir)
set objFolder= objFSO.GetFolder(sWorkingDir)

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

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

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

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

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

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

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


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