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

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

Модерирует : KLASS, IFkO

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230

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

KLASS



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Старые и смежные темы: по CMD и в Программах | по PowerShell | В помощь системному администратору | Прикладное программирование

PowerShell
Версии | Ассоциация и подпись сценариев
Сценарий для ассоциации файлов PowerShell и запуска неподписанных скриптов.
 
Прочее
Расширение возможностей
Функции
Write-Color
Output-DebugString
Провайдеры
Готовые скрипты
Полезные ссылки | Будет ли репозиторий PowerShell на ru-board?
Книги в PDF
Cheat Sheets
 

Cmd
Для перекодирования кириллицы 866<—>1251 пользуйтесь онлайн сервисом Перекодировщик кириллицы
 
Готовые решения и частые вопросы
 
Описания работы команд и символов участниками темы:
setlocal enabledelayedexpansion и переменные окружения
символы & и && в командной строке
Переменная %0
 
Полезные ссылки и утилиты

WSH (VBScript, JScript)
Программирование "удобняшек" на VBScript

Примечания:
• Большие куски кода заключайте в тэг [ more ]
• Чтобы не копировались концевые пробелы из форума, жмите на ссылку "Редактировать" в посте, и уже из редактора копируйте код без пробелов иначе сценарий может работать неправильно. Также для удаления концевых пробелов пользуйтесь скриптом от Nagual, или VBS-Скрипт-Модулем от ViSiToR.
• Сторонние консольные утилиты можно использовать только в виде готового решения и только в рамках сценариев. Никаких обсуждений и обучений работе с утилитами не предусмотрено и прямо запрещено правилами топика.
Шапка и около-темные вопросы |

Всего записей: 11448 | Зарегистр. 12-10-2001 | Отправлено: 13:40 17-02-2018 | Исправлено: YuS 2, 08:24 19-06-2021
iNNOKENTIY21



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

Цитата:
Набросал НЕ ОТЛАЖИВАЛ!  

Типа анонимные функции — вижу
Конечно, делить. На команды и запросы — не вижу
Рабочий код — не вижу
В чём профит, зачем так, а не function VHDGet { Param ($DiskImage) { $DiskImage | Get-Disk | Get-Partition | Get-Volume } }
Только не надо, что ради фэн-шуя в вакууме нужен реальный профит, то и то, стало быстрее, меньше кода,  возможна реализация таких то фишек…

Всего записей: 3640 | Зарегистр. 16-08-2012 | Отправлено: 12:23 19-01-2020
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Случайная находка
https://community.idera.com/database-tools/powershell/powertips/b/tips/posts/wmi-explorer
 
коротенькая функция потроха наружу, гуй на повершел (ogv)
 
 
iNNOKENTIY21

Цитата:
Рабочий код — не вижу

 
Тебе проще отладить запуская там, где ты отлаживаешь свой вариант
Улучши по-своему, и я ещё подкину идей

Всего записей: 17727 | Зарегистр. 14-10-2001 | Отправлено: 12:32 19-01-2020 | Исправлено: LevT, 12:35 19-01-2020
YuS_2



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

Цитата:
Дак, это, нету противопоставления с get-diskimage, был у тебя лишний пост с get-disk, только и всего

Понятно.
Ну у меня там был не просто get-disk, а:

Код:
$a = Mount-DiskImage -ImagePath "d:\TEMPWORK\!!!VM\DOS_WIN311\DOS Hard Disk.vhd"
$a| Get-Disk |fl *
$a| Get-Disk | Get-Partition | Get-Volume|fl *

как-то так...

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 12:51 19-01-2020
iNNOKENTIY21



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

Цитата:
Тебе проще отладить запуская там, где ты отлаживаешь свой вариант
Улучши по-своему, и я ещё подкину идей  

Ээ. это мне зачем, отлаживать твои идеи, я в них не понимаю?
Не понимаю как это: $storageTypeSwitcher =   и последующий вызов этого, должно работать.
Если идеи рабочие, выгодные, примем на вооружение или не приму, кто то другой примет
 
Вот, нет, что бы mount, тупо возвращал, еще и букву диска…
 


 
YuS_2
Цитата:
Понятно.  

Не, вот теперь понятно

Всего записей: 3640 | Зарегистр. 16-08-2012 | Отправлено: 13:53 19-01-2020
KLASS



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
Укушу, междусобойчика с LevT оставь мне...

Всего записей: 11448 | Зарегистр. 12-10-2001 | Отправлено: 14:19 19-01-2020
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всё та же функция монтирования и получения буквы, только классом Подробнее...

Всего записей: 3640 | Зарегистр. 16-08-2012 | Отправлено: 15:24 19-01-2020
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
 
Ага, я тоже начал было ковырять в сторону классов.
Отличый вариант, чтобы опробовать всё. На очереди динамический модуль
 
 
Как тебе такое?
 

Код:

class MountedDiskImage {  
    # Файл образа диска  
 
    ### class member definitions omitted for brevity ###
 
    MountedDiskImage($Path) {  
        $this.Path  = $Path  
        $this.Image = $this.GetImage()  
 
        if (-not ($this.Image.Attached)) {  
            $this.Mount()  
        }  
 
        $this.ToString()
    }  
 
    [string] ToString() {
        [int] $StorageType = $this.Image.StorageType
        if ($StorageType -notin (1..3)) {throw "Неизвестный тип хранения образа диска" }
 
        return GetDriveLetter($StorageType)
    }
 
    hidden [Microsoft.Management.Infrastructure.CimInstance] GetImage() {  
        return Get-DiskImage -ImagePath $this.Path  
    }  
 
    hidden [string] GetDriveLetter([int]$StorageType) {
        $result = switch ($StorageType) {
            1    {($this.Image | Get-Volume).DriveLetter}
            2..3 {($this.Image | Get-Disk | Get-Partition | Get-Volume).DriveLetter}  
        }
        return $result
    }
 
    hidden [void] Mount() {  
        $this.Image = Mount-DiskImage -ImagePath $this.Path  
    }  
}
 

 
Ссылка для контекста  
https://habr.com/ru/post/484300/
 
 
 
Добавлено:
 
Или даже так
 

Код:

    static [hashtable] $ImageProcessorSelector = @{
        Iso = {$this.Image | Get-Volume}
        Vhd = {$this.Image | Get-Disk | Get-Partition | Get-Volume}  
    }
 
 
    MountedDiskImage($Path, [bool]$Dismount = $false) {  
        $this.Path  = $Path  
        $this.Image = Get-DiskImage -ImagePath $this.Path  
 
        if (-not ($this.Image.Attached)) {  
            $this.Mount()  
        }
        if ($Dismount) {$this.Dismount()}
 
        $this.ToString()
    }  
 
    [string] ToString() {
        [int] $StorageType = $this.Image.StorageType
        if ($StorageType -notin (1..3)) {throw "Неизвестный тип хранения образа диска" }
 
        return (& ImageProcessor($StorageType)).DriveLetter
    }
 
    static hidden [scriptblock] ImageProcessor([int]$StorageType) {
        $type = switch ($StorageType) {
            1    {"Iso"}
            2..3 {"Vhd"}  
        }
        return [MountedDiskImage]::ImageProcessorSelector[$type]
    }
 
    [void] Mount() {  
        $this.Image = Mount-DiskImage -ImagePath $this.Path  
    }  
 
    [void] Dismount() {
        Dismount-DiskImage -ImagePath $this.Path  
    }

 
Добавлено:
 
Ништяк (в релиз не влезло):
 

Код:

enum ImageType {
    Iso
    Vhd
}
 
$ImageProcessor = {Param ([ImageType] $ImageType) {
    switch ($ImageType) {
        [ImageType]::Iso {$this.Image | Get-Volume}
        [ImageType]::Vhd {$this.Image | Get-Disk | Get-Partition | Get-Volume}
    }}
}

Всего записей: 17727 | Зарегистр. 14-10-2001 | Отправлено: 16:25 19-01-2020 | Исправлено: LevT, 18:32 19-01-2020
mihmann

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот вы где все, гении клавиатуры))
 
помогите пожалуйста с BAT файлом...
 
 
нужно чтобы Батник плейлисты создавал из папок
пример иерархии каталогов и файлов в них:
 
20-01 folder 01
      \aa1 (содержит 5 files) ext:mp3
      \aa2 (содержит 10 files) ext:mp3
      \aa3 (содержит 15 files) ext:mp3
20-01 folder 02
      \bb1 (содержит 3 files) ext:mp3
      \bb2 (содержит 6 files) ext:mp3
      \bb3 (содержит 9 files) ext:mp3
 
на выходе нужно получить два плейлиста, так как основных папок - две! остальное это уже всё вложения
 
названия создаваемых плейлистов: принцип имени - отсекаем цифры и пробел (то есть 6 символов)
folder 01.m3u             = 30 files
folder 02.m3u             = 18 files
 
 
Батник соответственно должен находится там же где и наши основные две папки
 
кол-во и имена папок - дело условное, от раза к разу меняется
 
 
порядок треков в плейлистах не имеет значения
 
 
внутренность M3U листа выглядит примерно так:
#EXTM3U
20-01 folder 01\subfolder 08\De-Phazz - Berlin Bad.mp3
20-01 folder 01\subfolder 01\Electro Dub Tango - La Del Subte.mp3
20-01 folder 01\subfolder 03\Exotica - Indian (New Dheli).mp3
20-01 folder 01\subfolder 01\Federico Aubele - Lluvia.mp3
20-01 folder 01\subfolder 03\Federico Aubele - Su Melodia.mp3
20-01 folder 01\subfolder 03\Fudge - Asian Affairs.mp3
20-01 folder 01\subfolder 01\Ganga - Go There.mp3
20-01 folder 01\subfolder 03\Gaudi - Dil Da Rog Muka Ja Mahi.mp3
20-01 folder 01\subfolder 01\Goya Project - Lamento (Sunset Rework).mp3
20-01 folder 01\subfolder 08\Gramatik - Tranquilo.mp3
20-01 folder 01\subfolder 03\Guruganesha Singh - Hari Om .mp3
20-01 folder 01\subfolder 01\Hp Hoeger - Dadunda.mp3
20-01 folder 01\subfolder 01\Hp Hoeger - When You Come Home.mp3
20-01 folder 01\subfolder 03\Ialaz - Blonde Hurricane.mp3

Всего записей: 63 | Зарегистр. 21-05-2017 | Отправлено: 19:03 19-01-2020 | Исправлено: mihmann, 19:27 19-01-2020
Jonmey

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mihmann
mp3tag (немецкий, freeware, без приставки pro, поддерживающий скрипты) вам в помощь - в нем это делается элементарно и не нужно морочить голову людям копеечными задачами.

Всего записей: 1377 | Зарегистр. 17-01-2011 | Отправлено: 19:59 19-01-2020
mihmann

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
сделать вручную - не составляет труда
 
вопрос про случаи когда в этих папках - по нескольку тысяч треков
 
и приходится ждать пока программа их прочитает
 
обратился исключительно потому что хочется этот процесс - ускорить..
 
а делать через закидку в программы по обработке Тегов - уже не актуально
 
у вас тут в ветке Задач на Bat файлы - немало подобного по сложности было... но ничего не подходит мне
 
спрашиваю, потому что видно что это не трудно... и кому-то может будет приятно решить несложную задачку! поэтому очень прошу не оскорблять
 
 
Поэтому Очень прошу помочь!!

Всего записей: 63 | Зарегистр. 21-05-2017 | Отправлено: 20:16 19-01-2020
iNNOKENTIY21



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

Цитата:
Как тебе такое?  


Цитата:
Или даже так  

Не, такой хоккей CLASS ToString Dismount нам не нужен.
А switch(bla) { 2..3 {bla} } вообще рабочий?

Всего записей: 3640 | Зарегистр. 16-08-2012 | Отправлено: 08:27 20-01-2020
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
 
Зря: ToString() вообще стандарт в OOP
Часто в классах его тупо рисуют выводя все члены
Как и пустой конструктор, даже там где он не нужен.
 
switch - не только инструкция/statement типа if, в повершел они оба ещё и выражения/expressions.
Должно работать
Возможно, я свитч неправильно нарисовал, switch -regex прокатит по-любому
 
https://powershellexplained.com/2018-01-12-Powershell-switch-statement
 
 
 
 
Добавлено:
 
Dismount() - для того, чтобы освободить от побочного эффекта использование инстанциированной переменной этого класса  
 
Я бы даже в конструкторе поменял дефолтное значение на $Dismount = $true

Всего записей: 17727 | Зарегистр. 14-10-2001 | Отправлено: 08:42 20-01-2020 | Исправлено: LevT, 08:58 20-01-2020
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
Ты в ToString() создаешь, инициализируешь свойство, проверяешь его и при некоторых обстоятельствах бросаешь исключение. Это очень плохо.
 

Цитата:
Возможно, я свитч неправильно нарисовал, switch -regex прокатит по-любому

А надо бы правильно.
 
 
Ты внимательно прочитай, что написал с Dismount
Весь код осталось, только в цикл заключить и отправится в страну вечных Dismount`ов

Код:
# монтируем
if (-not ($this.Image.Attached)) {  
            $this.Mount()  
        }
 
# размонтируем
if ($Dismount) {$this.Dismount()}

 
К тому же, тебе мало показалось, что делается и get и mount добавляем dismount, при котором букву диска не получить… а где же тогда new и set и remove

Всего записей: 3640 | Зарегистр. 16-08-2012 | Отправлено: 09:10 20-01-2020
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
 
Да я не против: поправь как считаешь нужным.
 
По-моему, корень зла - дискриминатор StorageType.  
Надо бы определиться: мы реально боимся, что ещё какой-то неизвестный тип вылезет, что ли?
Ты ж приводил доку: первичны расширения.
 
Поведение ToString() у меня вызвано в основном желанием не рефакторить дальше, оставить код узнаваемым для тебя.
 
Ну и я не так трагично воспринимаю.
Зачем классу публичный член-буква? Её всегда можно получить из $Image
 
В том-то и дело, что не всегда, а только в примонтированном состоянии
Но в моём варианте переменная-инстанс класса имеет смысл и после того, как побочный эффект в системе откатили назад.
 
 
Добавлено:
 
Работа с побочным эффектом инкапсулирована, получается.
Это главная цель класса в моём варианте.
 
А в твоём - похоже, что работа с буквами

 
Добавлено:
Короче один класс для этих двух задач - нарушение SRP

Всего записей: 17727 | Зарегистр. 14-10-2001 | Отправлено: 09:53 20-01-2020 | Исправлено: LevT, 10:10 20-01-2020
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Если, кто не умеет классом воспользоваться, то вот один из способов, скрипт: Get-MountedDiskImage.ps1
 
Вариант вызова скрипта:
ls 'К:\Папке путь\где iso образы лежат\*.iso' | & 'К:\Скрипту\Путь\Get-MountedDiskImage.ps1' | fl
или
& 'К:\Скрипту\Путь\Get-MountedDiskImage.ps1' -Path 'К:\Образу диска\Путь\Test.vhdx'
 


LevT

Цитата:
Зачем классу пубичный член-буква? Её всегда можно получить из $Image  

Прикалываешься? Не смешно.
Ради буквы всё и затевалось.
Унифицировано её получить как для iso так и для vhd(x) отсюда и mount, ибо с не смонтированного образа, букву не получить, привет dismount`у
 
зы
В пошике все публично, можно только скрыть. А почему отдельно, для удобства, была мысля форматнуть в вид: БукваДиска + ":\", но основной потребитель у меня, это diskpart, а ему надо только букву. И в процессе вопрос подвис. Спасибо, что напомнил.
 
Лирика

Всего записей: 3640 | Зарегистр. 16-08-2012 | Отправлено: 10:17 20-01-2020 | Исправлено: iNNOKENTIY21, 10:34 20-01-2020
farag



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Решил по-нормальному оформить курсы, которые я когда-то покупал:
http://forum.ru-board.com/topic.cgi?forum=62&topic=30859&start=1740#18
В шапку вынес.

Всего записей: 2522 | Зарегистр. 27-07-2009 | Отправлено: 10:27 20-01-2020
LevT



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

Цитата:
Ради буквы всё и затевалось.  

 
1) Дочитай то, что я дописал внизу
 
2) И даже Ради буквы выставлять её публичным членом класса - нарушение инкапсуляции.
Короче, надо её в смонтированном состоянии получить, хотя бы в приватную переменную, дальше можно отмонтировать.
 
А можно поменять
Но это уже другой сценарий использования.
 
Единственный класс тот боливар, которому вредно выносить сразу обоих
Точнее - вредно будет писателю клиентского сценария.  
Думаю, что повершел-way это как минимум выставить единственный класс через функцию с двумя наборами параметров
 
 
Добавлено:
 
И почитай уже мою хабрассылку

Всего записей: 17727 | Зарегистр. 14-10-2001 | Отправлено: 10:31 20-01-2020 | Исправлено: LevT, 10:44 20-01-2020
Jonmey

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mihmann
Цитата:
сделать вручную - не составляет труда
 вопрос про случаи когда в этих папках - по нескольку тысяч треков и приходится ждать пока программа их прочитает
То есть из-за того, что вам лень минуту подождать пока mp3tag* прочитает ваши "тысячи файлов" (которые вы скорее всего один раз послушаете за всю жизнь), кто-то должен корячиться и тратить свое время, создавая вам готовый батник? Тем более речь идет об одноразовой операции. Странная логика, если не называть вещи своими именами.
___________
* Причем готовые скрипты для создания всевозможных плейлистов m3u (аки m3u8) в избытке имеются на оффоруме программы - надо лишь протянуть ручку и взять с полочки.

Всего записей: 1377 | Зарегистр. 17-01-2011 | Отправлено: 10:35 20-01-2020 | Исправлено: Jonmey, 10:47 20-01-2020
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
В предыдущем посте сделал зы. чатик с пингом
 
LevT
Цитата:
Короче, надо её в смонтированном состоянии получить, хотя бы в приватную переменную, дальше можно отмонтировать.  

Снова, здорова. Зачем от монтировать, смысл в букве диска тогда?
При следующем монтировании она может и смениться!
Буква нужна актуальная, рабочая.
 
И почитай уже Лирика

Всего записей: 3640 | Зарегистр. 16-08-2012 | Отправлено: 10:58 20-01-2020
LevT



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

Цитата:
Зачем отмонтировать, смысл в букве диска тогда

 
По моему представлению, предпочтительная буква хранится то ли в самом томе, то ли в реестре (привязанная к id тома)
При монтировании буква меняется только в том случае, если нужная буква занята
 
У меня например есть диски-дети общего родителя.  
Глупо им назначать разные буквы, да они и не смонтируются одновременно (так раньше было, сейчас вроде поменялось)
 
 
Добавлено:
 
Ктоме того, не у всех смонтированных томов есть буквы
(так же как физические тома бывают без буквы, по нескольким причинам)
 
 
Добавлено:
 
 
Клиентский скрипт с использованием Pester
(у меня Pester актуальный из галереи, а не тот что поставляется с виндой)
 
Файл в текущей папке MountedDiskImage.Tests.ps1,  
тестит твой класс из MountedDiskImage.ps1
 

Код:

$here = Split-Path -Parent $MyInvocation.MyCommand.Path
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path) -replace '\.Tests\.', '.'
. "$here\$sut"
 
Function Use-MountedDiskImage {
   param (  
   # Файл образа диска  
   [Parameter(Mandatory, ValueFromPipeline, ValueFromPipelineByPropertyName)]  
   [ValidateNotNullOrEmpty()]  
   [ValidateScript( { Test-Path -Path $PSItem -PathType Leaf })]  
   [Alias("FullName")]  
   [IO.FileInfo]  
   $Path
   )
   
   process { [MountedDiskImage]::new($Path) }
}
 
 
Describe "Testing MountedDiskImage Class loading" {
    BeforeAll {
        $Path = "M:\VM\Hyper-V\Virtual Hard Disks\gen1.vhdx"
    }
 
    AfterAll {
        Remove-Variable -Name Path
    }
 
    It "class been loaded and works" {
        $MountedDiskImage = Use-MountedDiskImage -Path $Path  
        $MountedDiskImage.Path | Should -Be $Path
    }
}
 
Describe "Testing MountedDiskImage Class side effects" {
    BeforeAll {
        $Path = "M:\VM\Hyper-V\Virtual Hard Disks\gen1.vhdx"
        $MountedDiskImage = Use-MountedDiskImage -Path $Path  
    }
 
    AfterAll {
        Remove-Variable -Name Path -ea SilentlyContinue
    }
 
    # у меня тест не проходит, потому что буква не назначена
    It "drive letter is assigned" {
        $MountedDiskImage.DriveLetter | Should Match '[B-Z]'
    }
}
 


Всего записей: 17727 | Зарегистр. 14-10-2001 | Отправлено: 11:10 20-01-2020 | Исправлено: LevT, 12:47 20-01-2020
Открыть новую тему     Написать ответ в эту тему

Страницы: 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 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Сценарии для Windows


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru