Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование "удобняшек" на VBScript (Часть 2)

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

Открыть новую тему     Написать ответ в эту тему

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопросы, задачи и их решения по VBScript.

 
Мануал (english, 600 Кб). | Зеркало
MS Scripting 5.6 (700 КБ), включает последнюю версию VBS. Владельцам XP/2000(?) должен быть не нужен. | Зеркало
Немного на wikiпедии.
Предыдущие части: 1
 
Смежные темы:
Сценарии Windows
Командная строка, батники\сценарии (bat, cmd)
Скрипты KiXtart

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 04:12 12-07-2011 | Исправлено: Smitis, 23:28 26-02-2018
a929151



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Parazit111
 

Код:
ReDim args(WScript.Arguments.Count-1)
For i = 0 To WScript.Arguments.Count-1
  If InStr(WScript.Arguments(i), " ") > 0 Then
    args(i) = Chr(34) & WScript.Arguments(i) & Chr(34)
  Else
    args(i) = WScript.Arguments(i)
  End If
Next
 
msgbox Join(args, " ")

Всего записей: 1359 | Зарегистр. 30-03-2016 | Отправлено: 14:28 29-03-2017
Parazit111



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
a929151, спасибо, работает, как следует.
 

Всего записей: 36 | Зарегистр. 19-01-2017 | Отправлено: 15:34 29-03-2017
MisHel64



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Господа, со скриптами не давно, по этому нужны любые примеры...
Что имеем. Корневой каталог, который жестко определен в программе, так проще.
В этом каталоге создано несколько подкаталогов. В каждом подкаталоге содержится несколько файлов.
Задача 1. Получить список подкаталогов, и вывести их имена на экран.
Задача 2. Получить список файлов в подкаталоге, и вывести их имена на экран.
Задача 3. Объединить задачи 1 и 2, что бы пройтись по всем подкаталогам и вывести на экран все имена файлов.
Задача 4. Получить версию файла. Ну это я нашел как сделать (GetFileVersion).

Задача 5. Получить версию продукта. То же в принципе нашел, причем несколькими способами (например GetDetailsOf), но не понял как это сделать универсальным.  
Задача 6. Отсортировать полученные данные сначала по имени файла, потом по версии.
 
В тоге хотелось бы получить таблицу
ИМЯ_ФАЙЛА ВЕРСИЯ_ПРОДУКТА ИМЯ_ПОДКАТАЛОГА
И желательно отсортированную. В таблицу должны попасть только EXE и DLL файлы.
Заранее спасибо.

Всего записей: 2307 | Зарегистр. 21-09-2006 | Отправлено: 14:26 07-04-2017 | Исправлено: MisHel64, 17:16 07-04-2017
Laserje18

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Простая функция шифрования XOR (исключающее ИЛИ). При первом запуске скрипта в папке, где находится сам скрипт, создаётся пустой файл pass.txt, в него записываем ключ, при помощи которого и будет зашифрован файл. Как расшифровать зашифрованный файл при потере ключа не знаю. После сохранения ключа в файле pass.txt, файл, который нужно зашифровать, перетягиваем на скрипт, этот файл будет зашифрован и перезаписан, копий исходного, не зашифрованного файла, создаваться не будет. Повторно перетянув зашифрованный файл на скрипт, при правильном ключе, этот файл перезаписывается уже расшифрованным. Можно одновременно шифровать несколько файлов, перетянув их все на скрипт, файлы могут находиться в разных местах, при этом ключ будет один для всех.
 
Xor.vbs
Код:
Option Explicit
Dim FSO
Dim WshShell
Dim objArgs
Dim P
Dim List
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WshShell = CreateObject("WScript.Shell")
Set objArgs = WScript.Arguments
P=FSO.GetParentFolderName(WScript.ScriptFullName)&"\"&"pass.txt"
If Not FSO.FileExists(P) Then FSO.OpenTextFile(P,2,True,-1).Close
If Len(ReadAll(P,encoding(P))) = 0 Then WshShell.Popup "Ключ отсутствует.",1,WScript.ScriptName,16+4096: Wscript.Quit
If objArgs.Count = 0 Then WshShell.Popup "Файл для шифрования отсутствует.",1,WScript.ScriptName,16+4096: Wscript.Quit
For Each List In objArgs
  WriteText List,cryptXOR(List,P),encoding(List)
Next
WshShell.Popup "Ok",1,WScript.ScriptName,64+4096
'----------
Function cryptXOR(ByVal file,ByVal pass)
Dim txt,key,i,j
txt = ReadAll(file,encoding(file))
key = ReadAll(pass,encoding(pass))
j = 1
For i = 1 To Len(txt)
  If j = Len(key)+1 Then j = 1
  cryptXOR = cryptXOR & Chr(Asc(Mid(txt,i,1)) Xor Asc(Mid(key,j,1)))
  j = j + 1
Next
End Function
'----------
Function encoding(ByVal file)
Dim a
With WScript.CreateObject("Scripting.FileSystemObject")
  a = .OpenTextFile(file,1,False,0).Read(3)
End With
Select Case True
  Case Left(a,2) = Chr(&HFF) & Chr(&HFE) Or Left(a,2) = Chr(&HFE) & Chr(&HFF)
    encoding = "utf-16"
  Case a = Chr(&HEF) & Chr(&HBB) & Chr(&HBF)
    encoding = "utf-8"
  Case Else
    encoding = "windows-1251"
End Select
End Function
'----------
Function ReadAll(ByVal file,encoding)
With CreateObject("ADODB.Stream")
  .Type = 2: .Charset = encoding: .Open
  .LoadFromFile(file)
  ReadAll = .ReadText(-1)
  .Close
End With
End Function
'----------
Sub WriteText(ByVal file,txt,encoding)
With CreateObject("ADODB.Stream")
  .Type = 2: .Charset = encoding: .Open
  .WriteText(txt)
  .SaveToFile file, 2
  .Close
End With
End Sub
'----------
Wscript.Quit

Всего записей: 64 | Зарегистр. 11-09-2012 | Отправлено: 18:27 09-04-2017
MisHel64



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Laserje18 Как я понял, тут речь о текстовых файлах? При желании, на раз расшифровывается без ключа. Банальный частотный анализ при известной длине ключа.  Выяснить длину ключа - то же не проблема. А вопрос то собственно в чем?

Всего записей: 2307 | Зарегистр. 21-09-2006 | Отправлено: 10:17 10-04-2017
Laserje18

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MisHel64
Нет никакого вопроса, тема же "Программирование "удобняшек", вот это одна из удобняшек. Скрывает содержимое не только текстовых файлов, работает и с картинками, с doc-файлами - это то, что мне нужно было скрыть от чужих глаз. Просто так выложил, может кому-нибудь придётся к месту.

Всего записей: 64 | Зарегистр. 11-09-2012 | Отправлено: 11:03 10-04-2017
davidZ1

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
.

Всего записей: 1 | Зарегистр. 13-04-2017 | Отправлено: 11:50 13-04-2017 | Исправлено: davidZ1, 16:27 13-04-2017
HENDELF

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте, господа.
есть такой скрипт нарыл в инете

Код:
 Set Sapi = Wscript.CreateObject("SAPI.SpVoice")
     dim str
     if hour(time) < 10 then
     Sapi.speak "Доброе утро "
     else
     if hour(time) > 12 then
     if hour(time) > 16 then
     Sapi.speak "Добрый вечер "
     else
     Sapi.speak "Приятного вам дня "
     end if
     end if
     end if
     Sapi.speak "Текущее время"
 
    if hour(time) > 24 then
     Sapi.speak hour(time)-24
     else
     if hour(time) = 0 then
     Sapi.speak "24"
     else
     Sapi.speak hour(time)
     end if
     end if
     if minute(time) < 10 then
     Sapi.speak "o"
     if minute(time) < 1 then
     Sapi.speak "clock"
     else
     Sapi.speak minute(time)
     end if
     else
     Sapi.speak minute(time)
     end if

Поправите чтоб он говорил после 24 часа "спокойной ночи"
Иногда приходится ночью работать а он про утро

Всего записей: 416 | Зарегистр. 22-02-2006 | Отправлено: 17:29 13-04-2017
a929151



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
HENDELF

Код:
If hour(time) => 0 and hour(time) <= 5 Then  
 

Всего записей: 1359 | Зарегистр. 30-03-2016 | Отправлено: 20:19 13-04-2017
HENDELF

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
a929151
Куда вписать выше код?
Я разобрался заменил часть "доброе утро" но тогда как прописать доброе утро? Хотел утро, день,вечер и ночь чтоб проговаривал.

Всего записей: 416 | Зарегистр. 22-02-2006 | Отправлено: 20:35 13-04-2017 | Исправлено: HENDELF, 20:51 13-04-2017
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня такой скриптик завалялся:
 
TimeSpeak.vbs
 
Оказалось в win-10 неплохо время произносит

Всего записей: 3504 | Зарегистр. 16-08-2012 | Отправлено: 20:48 13-04-2017 | Исправлено: iNNOKENTIY21, 23:55 13-04-2017
HENDELF

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
Спасибо скрипт хорош но проговаривает "двоеточие" как то не естественно. Перевел часы на 23:00 не проговаривает "Доброй ночи" только время ет у меня так?

Всего записей: 416 | Зарегистр. 22-02-2006 | Отправлено: 21:01 13-04-2017
a929151



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
HENDELF

Код:
 Set Sapi = Wscript.CreateObject("SAPI.SpVoice")  
     dim str  
     if hour(time) < 10 then  
     Sapi.speak "Доброе утро "  
     else  
     if hour(time) > 12 then  
     if hour(time) > 16 then  
     Sapi.speak "Добрый вечер "  
     else  
     Sapi.speak "Приятного вам дня "  
     end if  
     end if  
     end if  
 

заменить на  
 

Код:
Set Sapi = Wscript.CreateObject("SAPI.SpVoice")  
 
If hour(time) => 0 and hour(time) < 7 Then
    Sapi.speak "Спокойной ночи"
else :  end if
 
if hour(time) => 7 and hour(time) < 12 then  
    Sapi.speak "Доброе утро"  
else : end If  
 
if hour(time) => 12 and hour(time) < 18 then  
    Sapi.speak "Приятного вам дня"
else : end If  
 
if hour(time) => 18 and hour(time) <= 23 then  
    Sapi.speak "Добрый вечер"
else : end If  

Всего записей: 1359 | Зарегистр. 30-03-2016 | Отправлено: 21:19 13-04-2017 | Исправлено: a929151, 21:19 13-04-2017
HENDELF

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
a929151
Спасибо за помощь, я далек от программирования. Теперь все проговаривает

Всего записей: 416 | Зарегистр. 22-02-2006 | Отправлено: 21:38 13-04-2017 | Исправлено: HENDELF, 21:39 13-04-2017
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
HENDELF

Цитата:
проговаривает "двоеточие"

не понял о чём это.
 

Цитата:
Перевел часы на 23:00 не проговаривает "Доброй ночи" только время ет у меня так?

у меня тоже. хз в чём прикол.
 
a929151
Знаешь в чём прикол выше?
 а зачем у тебя там
Цитата:
else :
 
 
Добавлено:

Цитата:
Перевел часы на 23:00 не проговаривает "Доброй ночи" только время ет у меня так?

кажись дошло.  дело в последнем and...

Код:

' 24 часов в сутках
if (currentHour >= startNight AND currentHour + startMorning < startMorning + 24) then Sapi.speak SayNight End If

Всего записей: 3504 | Зарегистр. 16-08-2012 | Отправлено: 21:44 13-04-2017
a929151



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
if (currentHour >= startNight   AND currentHour < startMorning) then Sapi.speak SayNight  
на
if (currentHour >= startNight   AND currentHour < SayNight) then Sapi.speak SayNight  
else можно удалить. это всё сниппеты)

Всего записей: 1359 | Зарегистр. 30-03-2016 | Отправлено: 21:59 13-04-2017
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
a929151
С этим нулевым часом..  

Всего записей: 3504 | Зарегистр. 16-08-2012 | Отправлено: 22:22 13-04-2017
a929151



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
' Если текущий час больше или равен началу ночи и текущий час меньше начала утра, то произнести Ночное приветствие  
if (currentHour >= startNight   AND currentHour <= 23) then Sapi.speak SayNight  
if (currentHour >= 0   AND currentHour < startMorning) then Sapi.speak SayNight  

Всего записей: 1359 | Зарегистр. 30-03-2016 | Отправлено: 22:34 13-04-2017
HENDELF

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21

Цитата:
проговаривает "двоеточие"
 
не понял о чём это.  

Возможно дело в 7, когда запускаю скрипт говорит, двадцать двоеточие двадцать сем двоеточие ноль девять.

Всего записей: 416 | Зарегистр. 22-02-2006 | Отправлено: 22:42 13-04-2017
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
HENDELF

Цитата:
Возможно дело в 7, когда запускаю скрипт говорит, двадцать двоеточие двадцать сем двоеточие ноль девять.  

Видимо так и есть, в 10 произносит без всяких двоеточий. и склоняет вроде нормально. Это не скрипт а движок речевой. Может быть его можно обновить, отдельно от винды.


обновил, с учетом правок a929151 скрипт TimeSpeak.vbs

Всего записей: 3504 | Зарегистр. 16-08-2012 | Отправлено: 00:01 14-04-2017 | Исправлено: iNNOKENTIY21, 00:03 14-04-2017
Открыть новую тему     Написать ответ в эту тему

Страницы: 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

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование "удобняшек" на VBScript (Часть 2)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru