Полезные скрипты для windows

Навигация по странице

  1. Как сделать и запустить скрипт PowerShell?
  2. Как запустить скрипт в PowerShell?
  3. Как разрешить выполнение неподписанного скрипта PowerShell?
  4. Как запустить скрипт PowerShell в фоновом режиме?
  5. Как запустить скрипт через PowerShell с параметрами?
  6. Как запустить скрипт PowerShell с помощью ярлыка?
  7. Полезные сценарии для Windows
  8. Что такое командные скрипты Windows?
  9. Что такое Bat-скрипты Windows?
  10. Что такое исполняемые скрипты Windows?
  11. Какое расширение имеют файлы скриптов PowerShell?
  12. Какие скрипты PowerShell используются администраторами?

Выполнение скриптов в PowerShell

PowerShell представляет собой новую командную оболочку для операционной системы Windows, созданную Microsoft с целью полного замещения и улучшения cmd. Эта оболочка уже включена в состав операционных систем Windows 7 и выше. Если у вас старая версия операционной системы или вы хотите загрузить более новую версию PowerShell. Windows — операционная система, пользующаяся огромной популярностью среди миллионов пользователей по всему миру. В ее арсенале множество функций и возможностей, однако некоторые из них остаются недостаточно известными обычным пользователям. В данной статье мы расскажем о нескольких полезных сценариях, способных сделать вашу работу с Windows более эффективной и удобной.

Политика исполнения PowerShell-скриптов представляет собой механизм безопасности, управляющий условиями загрузки конфигурационных файлов и запуска сценариев в данной среде. Её основное предназначение — предотвращение выполнения потенциально вредоносных сценариев.

Полезные скрипты PowerShell для Windows

Как сделать и запустить скрипт PowerShell

Создать скрипт PowerShell довольно просто. Вот шаги, которые вы можете выполнить, чтобы создать свой первый скрипт:

1. Откройте редактор PowerShell ISE:

PowerShell ISE (Integrated Scripting Environment) предоставляет удобную среду для написания и отладки скриптов. Вы можете его найти в меню «Пуск» (Start) под разделом «Стандартные» (Standard) или выполнить команду `PowerShell_ise` в командной строке.

2. Напишите свой скрипт:

В окне редактора PowerShell ISE напишите свой скрипт. Ниже приведен пример простого скрипта, который выводит «Hello, World!» в консоль:

Write-Host «Hello, World!»

3. Сохраните скрипт:

  • Нажмите `Ctrl + S` или выберите «Файл» (File) -> «Сохранить» (Save).
  • Укажите имя файла и добавьте расширение `.ps1` (например, `MyScript.ps1`).

4. Запустите скрипт:

  • Выберите весь текст скрипта.
  • Нажмите `F5` или выберите «Запустить сценарий» (Run Script) в PowerShell ISE.

Примеры более сложных скриптов:

#Скрипт, создающий новую папку:

$folderPath = «C:\Path\To\NewFolder»

New-Item -ItemType Directory -Path $folderPath

#Скрипт, удаляющий все файлы старше 7 дней в папке:

$folderPath = «C:\Path\To\Folder»

$limitDate = (Get-Date).AddDays(-7)

Get-ChildItem $folderPath | Where-Object { $_.LastWriteTime -lt $limitDate } | Remove-Item

#Скрипт, проверяющий статус службы:

$serviceName = «wuauserv»

$serviceStatus = Get-Service -Name $serviceName | Select-Object Status

Write-Host «The status of service $serviceName is: $($serviceStatus.Status)»

Ваши скрипты могут включать более сложные команды, использовать условия, циклы и вызывать функции. Как только вы освоите основы, вы сможете создавать более мощные и гибкие скрипты PowerShell.

Полезные скрипты PowerShell для Windows

Скрипты для Windows — не просто строки кода, а волшебные ключи, открывающие дверь в мир автоматизации. В руках умелого пользователя они становятся инструментом, способным не только сэкономить время, но и превратить рутинные задачи в захватывающее путешествие по потокам байтов и командам.

Как запустить скрипт в PowerShell?

Существует несколько способов запуска скрипта, вот основные из них:

  1. Запустить оболочку PowerShell и выполнить в ней скрипт, указав путь к файлу и его имя (например, C:\Scripts\test.ps1) или перейдя в каталог скрипта командой cd C:\Scripts и выполнить его с помощью команды .\test.ps1.
  2. Оболочку можно найти и запустить разными способами. Один из них — через меню «Пуск». Для Windows 7 пройдите по следующему пути: «Все программы» — «Стандартные» — «Windows PowerShell» и запустите оболочку «Windows PowerShell». Для Windows 10 найдите группу по букве «W» и в ней выберите «Windows PowerShell».
  3. Запустить «Интегрированную среду сценариев Windows PowerShell ISE», которая представляет собой среду разработки, позволяющую редактировать и отлаживать скрипты PowerShell. Откройте программу, выберите «Открыть» или в меню Файл выберите «Открыть» и укажите нужный скрипт, затем нажмите F5 или кнопку «Выполнить скрипт». Поиск Windows PowerShell ISE можно осуществить так же, как и оболочки PowerShell, через меню «Пуск».
  4. Запустить стандартный командный интерфейс и ввести следующую команду:

PowerShell -file <имя_скрипта> (например: PowerShell -file myscript.ps1)

Если вы ранее не запускали скрипты PowerShell, возможно, вы получите сообщение о том, что файл <имя_скрипта> не может быть загружен, так как выполнение скриптов запрещено для данной системы. В этом случае введите «get-help about_signing» для получения дополнительной информации. Это связано с безопасностью и предотвращением случайного выполнения вредоносного кода, поэтому все скрипты должны быть подписаны цифровой подписью.

Как разрешить выполнение неподписанного скрипта PowerShell?

  • В оболочке PowerShell перед запуском скрипта выполните следующую команду для разрешения выполнения неподписанных скриптов в текущем сеансе оболочки:

Set-ExecutionPolicy RemoteSigned -Scope Process

  • При запуске из стандартного командного интерфейса используйте параметр -executionpolicy, например:

PowerShell -executionpolicy RemoteSigned -file <имя_скрипта>

Оба способа устанавливают политику только для текущего сеанса, при этом политика безопасности выполнения скриптов PowerShell, установленная в реестре, остается неизменной. Если вы хотите изменить политику безопасности выполнения скриптов «навсегда», используйте следующий способ:

  • Разрешить выполнение навсегда: запустите оболочку PowerShell от имени «Администратора» и выполните команду:

Set-ExecutionPolicy RemoteSigned

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

Примечание: Если скрипт был загружен из интернета, чтобы избежать запроса на подтверждение выполнения, используйте параметр Bypass вместо RemoteSigned — это полное отключение любых запросов и предупреждений.

Полезные скрипты PowerShell для Windows

Как запустить скрипт PowerShell в фоновом режиме?

Для этого используйте параметр -WindowStyle, который может принимать значения: Normal, Minimized, Maximized и Hidden. Чтобы запустить неподписанный скрипт в фоновом режиме, выполните команду:

PowerShell -executionpolicy RemoteSigned -WindowStyle Hidden -file <имя_скрипта>

Также при желании вы можете добавить -NonInteractive, чтобы скрипт не задавал никаких вопросов. Таким образом, скрипт выполнится незаметно для пользователя. Однако будьте внимательны, используя этот способ.

Скрипты PowerShell Windows

Как запустить скрипт через PowerShell с параметрами?

Запуск осуществляется аналогично запуску обычной программы или bat-файла с параметрами. Например, чтобы запустить скрипт с параметрами из командной строки, используйте следующую команду:

PowerShell -executionpolicy RemoteSigned -file <имя_скрипта> param1 param2 «еще один текстовый параметр«

В самом скрипте параметры могут быть получены так:

param ($var1, $var2, $var3)

echo $var1, $var2, $var3

В интегрированной среде PowerShell ISE скрипт с параметрами можно запустить аналогично, используя область команд.

Выполнение скриптов в PowerShell

Как запустить скрипт PowerShell с помощью ярлыка?

Это можно сделать двумя способами:

  1. Создать файл bat/cmd, в котором прописать команду для запуска скрипта (с параметрами, как описано выше).
  2. Создать ярлык на PowerShell, который находится в папке c:\Windows\System32\WindowsPowerShell\v<версия>\. В свойствах ярлыка в поле «Объект» добавьте необходимые параметры.

Таким образом, например, чтобы запустить скрипт PowerShell при входе пользователя, просто создайте ярлык, как описано во втором пункте, и поместите его в автозагрузку. Также создание ярлыка с использованием одного из вышеописанных методов позволяет легко запускать скрипт от имени администратора или от имени любого другого пользователя, как обычную программу.

Скриптовый язык PowerShell — мощный инструмент для решения различных задач. Однако следует использовать его с осторожностью, поскольку он может быть использован не только для полезных, но и для вредоносных целей. Будьте внимательны при работе с ним.

Скрипты PowerShell для администратора

Полезные сценарии для Windows

1. Скрипт выключения Windows (или перезагрузки):

Простейшая операция выключения компьютера. Откройте блокнот и введите:

shutdown -s -t 0

Сохраните файл с расширением *.cmd* (например, *shutdown.cmd*). При запуске этого файла компьютер выключится. Замените «-s» на «-r» для перезагрузки. Параметр «-t» устанавливает таймер; в данном случае, он равен 0 секунд, но можно установить, например, на 60 для выключения через 60 секунд.

2. Удаление ненужных приложений:

С помощью следующего скрипта можно удалить предустановленные приложения:

get-appxpackage -name *APPNAME* | remove-appxpackage

Замените *APPNAME* на название ненужного приложения. Хотя удаление можно выполнить стандартным способом или через программы, этот скрипт делает процесс более удобным.

3. Управление процессами:

Воспользуйтесь PowerShell для борьбы с медленными процессами. Выведите все службы:

Get-Service

Или получите информацию о конкретной службе с кодовым именем *NAME*:

Get-Service *NAME*

Создайте файл, который закрывает процессы с повышенным потреблением ресурсов:

Stop-Service -Name *ANTIVIRUS*

Stop-Service -Name *BROWSER*

Замените *ANTIVIRUS* и *BROWSER* на соответствующие названия.

4. Переименование группы файлов:

Решите проблему однотипных файлов с помощью скрипта группового переименования:

$path = «$comp\desktop\journey\russia»

$filter = ‘*.jpg’

get-childitem -path $path -filter $filter | rename-item -newname {$_.name -replace ‘HGNMD’,’RUSSIA’}

Укажите путь, расширение и выполните замены в строке.

5. Поиск файлов:

Используйте PowerShell для поиска файлов в директории:

Get-Childitem C:\Windows\*.log

Для более сложного поиска в подпапках:

Get-ChildItem C:\Windows\* -Include *.log -Recurse -Force

6. Справка:

Пользуйтесь командой *Get-Help* для получения информации:

Get-Help Services

Для более подробной справки по конкретной команде:

Get-Help —Name *CMDLET*

7. Получение информации о системе:

Используйте PowerShell для получения данных о системе, например, уровне заряда аккумулятора:

Add-Type -AssemblyName System.Windows.Forms

[Windows.Forms.PowerStatus].GetConstructor(‘NonPublic, Instance’, $null, [Type[]]@(), $null ).Invoke($null)

Информация об архитектуре процессора удаленного компьютера:

[PSObject].Assembly.GetType(‘System.Management.Automation.PsUtils’).GetMethod(‘GetProcessorArchitecture’, [Reflection.BindingFlags]40).Invoke($null, @())

Проверка прав администратора текущего пользователя:

[PSObject].Assembly.GetType(‘System.Management.Automation.Utils’).GetMethod(‘IsAdministrator’, [Reflection.BindingFlags]40).Invoke($null, @())

Эти простые и полезные сценарии помогут вам эффективнее управлять вашей системой Windows.

Командные скрипты Windows

Это общий термин, который включает в себя различные типы скриптов и командных файлов, используемых в операционной системе Windows для автоматизации задач. Включают в себя как скрипты на языке командной строки (например, скрипты CMD), так и на более современных языках, таких как PowerShell. Например, Bat-скрипты (*.bat), PowerShell-скрипты (*.ps1), а также другие сценарии, созданные для автоматизации определенных задач.

Bat-скрипты Windows

Bat-скрипты, или файлы пакетных команд (Batch-файлы), представляют собой текстовые файлы, содержащие команды и инструкции для выполнения в командной строке Windows. Основаны на языке пакетных команд (Batch scripting language). Расширение файла: *.bat* (например, *myscript.bat*).

Пример простого bat-скрипта:

«`batch

@echo off

echo Hello, World!

pause

Выполняемые скрипты Windows

Это скрипты, которые могут быть выполнены в среде операционной системы Windows и обычно предназначены для автоматизации различных задач. Включают в себя bat-скрипты (командные файлы), PowerShell-скрипты, а также другие типы скриптов, которые можно выполнять в Windows. Общее отличие между bat-скриптами и PowerShell-скриптами заключается в языке программирования, используемом для написания команд и инструкций. Bat-скрипты используют язык пакетных команд, который является устаревшим и имеет ограниченные возможности по сравнению с PowerShell, который представляет более современный и мощный язык с разнообразными функциональными возможностями для автоматизации задач в Windows.

Какое расширение имеют файлы скриптов PowerShell

PowerShell-скрипты имеют расширение *.ps1*, и для их выполнения часто требуется предварительная настройка политики выполнения скриптов (Execution Policy), чтобы разрешить запуск скрипта через PowerShell в системе.

Скрипты PowerShell для администратора

PowerShell — мощный инструмент для сисадминов Windows, предоставляя широкий набор команд и сценариев для автоматизации и управления системой. Ниже приведены несколько примеров PowerShell-скриптов, которые могут быть полезны администраторам:

1. Создание резервной копии файлов:

$sourcePath = «C:\Path\To\Source»

$destinationPath = «D:\Backup»

$timestamp = Get-Date -Format «yyyyMMddHHmmss»

$backupFolder = «$destinationPath\Backup_$timestamp»

Copy-Item -Path $sourcePath -Destination $backupFolder -Recurse

2. Мониторинг дискового пространства:

$threshold = 80

$disks = Get-WmiObject Win32_LogicalDisk | Where-Object { $_.DriveType -eq 3 }

foreach ($disk in $disks) {

$freeSpacePercentage = [math]::Round(($disk.FreeSpace / $disk.Size) * 100, 2)

$diskLetter = $disk.DeviceID

if ($freeSpacePercentage -lt $threshold) {

Write-Host «Warning: Disk $diskLetter is running low on free space ($freeSpacePercentage%)»

# Можно добавить уведомление администратора

}

}

3. Создание нового пользователя:

$username = «NewUser»

$password = ConvertTo-SecureString «SecurePassword123» -AsPlainText -Force

$fullname = «New User»

$description = «Description of the new user»

$ou = «OU=Users,DC=Domain,DC=com»

New-ADUser -SamAccountName $username -UserPrincipalName «$username@domain.com» -Name $fullname -GivenName $fullname -Surname $username -Description $description -AccountPassword $password -Enabled $true -PassThru -Path $ou

4. Мониторинг событий в журнале событий:

$logName = «System»

$events = Get-WinEvent -LogName $logName -MaxEvents 10

foreach ($event in $events) {

Write-Host «Event ID $($event.Id): $($event.Message)»

}

5. Обновление всех установленных модулей PowerShell:

Get-Module -ListAvailable | ForEach-Object {

Update-Module -Name $_.Name -Force

}

6. Удаление временных файлов в системной директории:

$tempPath = [System.IO.Path]::GetTempPath()

Remove-Item «$tempPath\*» -Force

7. Создание отчета о состоянии служб:

$services = Get-Service | Select-Object DisplayName, Status, StartType

$services | Export-Csv -Path «C:\Path\To\ServiceReport.csv» -NoTypeInformation

8. Настройка правил брандмауэра:

New-NetFirewallRule -DisplayName «Allow-SSH» -Direction Inbound -Protocol TCP -LocalPort 22 -Action Allow

9. Удаление неиспользуемых профилей пользователей:

$inactiveDays = 90

$userProfiles = Get-WmiObject Win32_UserProfile | Where-Object { $_.Special -eq $false }

foreach ($profile in $userProfiles) {

$lastUseDate = $profile.LastUseTime

$difference = (Get-Date) — $lastUseDate

if ($difference.Days -ge $inactiveDays) {

Remove-WmiObject -InputObject $profile -Confirm:$false

Write-Host «User profile $($profile.LocalPath) deleted.»

}

}

Эти примеры предоставляют общее представление о том, как PowerShell может использоваться администраторами для автоматизации различных задач в Windows-среде. Помните, что некоторые команды могут потребовать выполнения от имени администратора.

Для вызова скриптов PowerShell, вы можете использовать команду `Invoke-Expression` или просто указать путь к файлу скрипта. Предположим, у вас есть следующие скрипты: `ClearDisk.ps1`, `InstallPrograms.ps1`, `BackupScript.ps1`, и `UpdateSystem.ps1`.

1. Скрипт очистки диска (ClearDisk.ps1):

# ClearDisk.ps1

# Ваш код для очистки диска

# Пример: удаление временных файлов

Remove-Item -Path «$env:TEMP\*» -Recurse -Force

Как вызвать:

# Используйте Invoke-Expression

Invoke-Expression -Command «.\ClearDisk.ps1»

# Или просто указывайте путь к файлу скрипта

.\ClearDisk.ps1

2. Скрипт автоматической установки программ (InstallPrograms.ps1):

# InstallPrograms.ps1

# Ваш код для автоматической установки программ

# Пример: установка программы Chocolatey и установка пакетов

Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString(‘https://chocolatey.org/install.ps1’))

choco install packageName -y

Как вызвать:

# Используйте Invoke-Expression

Invoke-Expression -Command «.\InstallPrograms.ps1»

# Или просто указывайте путь к файлу скрипта

.\InstallPrograms.ps1

3. Скрипт резервного копирования (BackupScript.ps1):

# BackupScript.ps1

# Ваш код для создания резервной копии

# Пример: копирование файлов в другую директорию

$sourcePath = «C:\Path\To\Source»

$destinationPath = «D:\Backup»

Copy-Item -Path $sourcePath -Destination $destinationPath -Recurse

Как вызвать:

# Используйте Invoke-Expression

Invoke-Expression -Command «.\BackupScript.ps1»

# Или просто указывайте путь к файлу скрипта

.\BackupScript.ps1

4. Скрипт автоматического обновления системы (UpdateSystem.ps1):

# UpdateSystem.ps1

# Ваш код для автоматического обновления системы

# Пример: обновление всех установленных модулей PowerShell

Get-Module -ListAvailable | ForEach-Object {

Update-Module -Name $_.Name -Force

}

Как вызвать:

# Используйте Invoke-Expression

Invoke-Expression -Command «.\UpdateSystem.ps1»

# Или просто указывайте путь к файлу скрипта

.\UpdateSystem.ps1

Убедитесь, что вы находитесь в той же директории, что и ваши скрипты, или укажите полный путь к файлу скрипта.

В этой статье мы коснулись всех аспектов создания, запуска и использования скриптов в Windows. Надеемся, что эти советы и примеры помогут вам освоить этот увлекательный мир автоматизации и сделают вашу работу более эффективной и приятной.

В статье рассказывается:

В статье рассказывается:

  1. Выключение и перезапуск
  2. Удаляем ненужное
  3. Управляем процессами
  4. Переименовываем группу файлов
  5. Ищем файлы
  6. Справка
  7. Находим данные
  8. Пройди тест и узнай, какая сфера тебе подходит:
    айти, дизайн или маркетинг.

    Бесплатно от Geekbrains

Если вы только недавно встали на путь программирования и ещё даже не пробовали поиграться с установленной операционной системой, то манипулирование с помощью скриптов может вызвать резонные вопросы необходимости и удобства. Однако, даже если опустить тот простой факт, что они помогают лучше понять, как функционирует ОС, в будущем при создании приложений, исполнение сценариев может оказаться крайне полезным навыком.

Для исполнения следующих скриптов мы обратимся к PowerShell. Любой системный администратор (по профессии или в душе) знает его возможности и периодически пользуется, для всех остальных это просто интерфейс командной строки или иностранное слово. На популярных ресурсах вы можете найти уйму идей, как использовать PowerShell для развлечения и дела, здесь же мы рассмотрим лишь простые скрипты, которые помогут войти в курс дела.

Выключение и перезапуск

Итак, самая простая операция выключения вашего компьютера. Открываем ;блокнот, прописываем:

shutdown -s -t 0

Сохраняем файл, как *.cmd (*- имя вашего файла, например shutdown.cmd) и не забудьте в типе выбрать “все файлы”. Всё, исполняемый файл по запуску выключит ваш компьютер. “-s”, в данном случае означает выключение, замените на “-r” — получите перезагрузку. “-t” — таймер, у нас он установлен на 0 секунд, но если установить на 60 — получите выключение через 60 секунд.

Удаляем ненужное

В различных сборках, предустановленных на компьютер или ноутбук, вы можете наткнуться на массу абсолютно ненужных пакетов приложений. Удалить их с помощью скрипта проще простого:

get-appxpackage -name *APPNAME* | remove-appxpackage

Как вы понимаете, *APPNAME* — название неинтересующей надстройки. Да, удалять эти пакеты можно стандартным путём или через специальные программы, но вы можете создать скрипт, который удалит их все одним двойным кликом.

Топ-30 самых востребованных и высокооплачиваемых профессий 2023

Поможет разобраться в актуальной ситуации на рынке труда

Подборка 50+ бесплатных нейросетей для упрощения работы и увеличения заработка

Только проверенные нейросети с доступом из России и свободным использованием

ТОП-100 площадок для поиска работы от GeekBrains

Список проверенных ресурсов реальных вакансий с доходом от 210 000 ₽

Уже скачали 34162

Управляем процессами

Есть в PowerShell две полезные команды, которые позволят бороться с ветряными мельницами (процессами, снижающими быстродействие). Вывести их на экран можно просто прописав:

Get-Service

Или информацию о конкретном сервисе под кодовым названием *NAME* (на этом месте должно быть название интересующего сервиса):

Get-Service *NAME*

Но это можно сделать в диспетчере задач, а вот действительно полезным может оказаться создание файла, который по клику закрывал бы все процессы с повышенным потреблением ресурсов (браузеры, антивирусы и пр.). Для этого воспользуйтесь командой Stop-Service:

Stop-Service -Name *ANTIVIRUS*

Stop-Service -Name *BROWSER*

Названия для замены указаны в * *.

Переименовываем группу файлов

Ещё одна назойливая проблема: вы скопировали с фотоаппарата или телефона изображения. Огромная куча фотографий, которые называются однотипно вроде HGNMD034, где HGNMD — название общей директории, объединяющей файлы, например, отснятые за один день.

Для того, чтобы сделать название этих файлов приятнее или иметь возможность объединить несколько папок, не получив при этом хронологическую путаницу из-за имен, можно использовать скрипт группового переименования:

$path = «$comp\desktop\journey\russia»
$filter = ‘*.jpg’
get-childitem -path $path -filter $filter |
rename-item -newname {$_.name -replace ‘HGNMD’,’RUSSIA’}

В первой строке в кавычках укажите точный путь к файлам. Во второй строке — расширение файлов, подлежащих изменению. В последней строке вместо “HGNMD” — общее в названиях файлов, подлежащее замене, на что-то, вместо “RUSSIA” — имя, которое вы хотите присвоить. Если данный скрипт опять сохранить в качестве исполняемого файла, то подобные однотипные операции будут отнимать у вас всего несколько секунд времени.

Скачать
файл

Ищем файлы

Ещё одна простая задача, реализуемая на PowerShell — поиск файлов в директории. В данном случае рассмотрим поиск log-файлов:

Get-Childitem C:\Windows\*.log

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

Get-ChildItem C:\Windows\* -Include *.log -Recurse -Force

Это чуть более правильная и полная запись, где “Include” — указывает на искомую часть, “Recurse” — на поиск во вложенных каталогах, “Force” — поиск включает в себя системные и скрытые файлы.

Дарим скидку от 60%
на курсы от GeekBrains до 11 мая

Уже через 9 месяцев сможете устроиться на работу с доходом от 150 000 рублей

Забронировать скидку

Справка

Итак, с общими принципами функционирования PowerShell мы более-менее разобрались. Если что-то непонятно — обратитесь к справочной информации следующим образом:

Get-Help Services

Это команда, которая выведет на экран все доступные команды с кратким описанием. Хотите подробнее? Нет ничего проще:

Get-Help -Name *CMDLET*

Где вместо *CMDLET* вставьте любую интересующую команду.

Только до 8.05

Скачай подборку материалов, чтобы гарантированно найти работу в IT за 14 дней

Список документов:

ТОП-100 площадок для поиска работы от GeekBrains

20 профессий 2023 года, с доходом от 150 000 рублей

Чек-лист «Как успешно пройти собеседование»

Чтобы получить файл, укажите e-mail:

Введите e-mail, чтобы получить доступ к документам

Подтвердите, что вы не робот,
указав номер телефона:

Введите телефон, чтобы получить доступ к документам

Уже скачали 52300

Находим данные

Теперь перейдём к простым скриптам, описанным чуть более сложными командами. Например, с помощью PowerShell вы можете выудить почти всю информацию о железе и комплектующих. Как вариант, вот скрипт для оценки уровня заряда аккумулятора:

Add-Type -AssemblyName System.Windows.Forms
[Windows.Forms.PowerStatus].GetConstructor(‘NonPublic, Instance’, $null, [Type[]]@(), $null ).Invoke($null)

Архитектура процессора удалённого компьютера:

[PSObject].Assembly.GetType( ‘System.Management.Automation.PsUtils’
).GetMethod(‘GetProcessorArchitecture’, [Reflection.BindingFlags]40
).Invoke($null, @())

Иногда важной задачей бывает проверка прав администратора у текущего пользователя. Вот простой способ на PowerShell:

[PSObject].Assembly.GetType(‘System.Management.Automation.Utils’).GetMethod(
‘IsAdministrator’, [Reflection.BindingFlags]40).Invoke($null, @())

Читайте также!

Что такое браузер и как он работает

Что такое браузер и как он работает

На этом пока остановимся. Как вы наверное убедились, PowerShell не самый сложный, но очень полезный инструмент, который способен выполнять, как простейшие операции, так и достаточно сложные. Однако PowerShell не единственный инструмент для создания скриптов для Windows. Но об этом в следующий раз.

Начало карьеры: интенсив «Основы веб-разработки».

Mega Collection of PowerShell Scripts

Contains 500+ free and stand-alone PowerShell scripts for Linux, Mac OS, and Windows. Useful on the command-line (CLI), for remote control via SSH, for automation (on startup/login/logoff/daily/hourly/shutdown or via AutoHotkey/Jenkins/etc.), for context menus, for voice commands (see talk2windows), or simply to learn PowerShell. All scripts are located in the 📂scripts subfolder and support Unicode — a modern console like Windows Terminal is recommended.

Download | PowerShell FAQ | PowerShell Cheat Sheet | PowerShell Documentation

🔊 Scripts for Audio & Voice

Script Description
list-voices.ps1 Lists the installed text-to-speech voices. Read more »
play-beep-sound.ps1 Plays a short beep sound. More »
play-files.ps1 Plays the given audio files. More »
play-happy-birthday.ps1 Plays the Happy Birthday song. More »
play-imperial-march.ps1 Plays the Imperial March (Star Wars). More »
play-jingle-bells.ps1 Plays Jingle Bells. More »
play-mission-impossible.ps1 Plays the Mission Impossible theme. More »
play-m3u.ps1 Plays the given M3U playlist. More »
play-mp3.ps1 Plays the given MP3 sound file. More »
play-super-mario.ps1 Plays the Super Mario intro. More »
play-tetris-melody.ps1 Plays the Tetris melody. More »
speak-checklist.ps1 Speaks the given checklist by text-to-speech. More »
speak-countdown.ps1 Speaks a countdown by text-to-speech. More »
speak-english.ps1 Speaks text with an English text-to-speech voice. More »
speak-epub.ps1 Speaks the content of the given Epub file by text-to-speech. More »
speak-file.ps1 Speaks the content of the given text file by text-to-speech. More »
speak-french.ps1 Speaks text with a French text-to-speech voice. More »
speak-german.ps1 Speaks text with a German text-to-speech voice. More »
speak-italian.ps1 Speaks text with an Italian text-to-speech voice. More »
speak-spanish.ps1 Speaks text with a Spanish text-to-speech voice. More »
speak-test.ps1 Performs a speak test by text-to-speech. More »
speak-text.ps1 Speaks the given text by text-to-speech. More »
spell-word.ps1 Spells the given word by text-to-speech. More »
tell-joke.ps1 Tells a random joke by text-to-speech. More »
tell-quote.ps1 Tells a random quote by text-to-speech. More »
turn-volume-down.ps1 Turns the audio volume down. More »
turn-volume-fully-up.ps1 Turns the audio fully up. More »
turn-volume-off.ps1 Turns audio off. More »
turn-volume-on.ps1 Turns audio on. More »
turn-volume-up.ps1 Turns the audio volume up. More »

⚙️ Scripts for Computer Management

Script Description
add-firewall-rules.ps1 Adds firewall rules for executables, needs admin rights. Read more »
check-cpu.ps1 Checks the CPU temperature. More »
check-dns.ps1 Checks the DNS resolution. More »
check-drive-space.ps1 Checks a drive for free space left. More »
check-file-system.ps1 Checks the file system of a drive (needs admin rights). More »
check-health.ps1 Checks the system health. More »
check-ping.ps1 Checks the ping latency to the internet. More »
check-swap-space.ps1 Checks the swap space for free space left. More »
check-windows-system-files.ps1 Checks Windows system files (needs admin rights). More »
enable-crash-dumps.ps1 Enables the writing of crash dumps. More »
hibernate.ps1 Hibernates the local computer immediately. More »
install-github-cli.ps1 Installs GitHub CLI. More »
install-chrome-browser.ps1 Installs the Google Chrome browser. More »
install-firefox.ps1 Installs the Firefox browser. More »
install-knot-resolver.ps1 Installs the Knot Resolver (needs admin rights). More »
install-salesforce-cli.ps1 Installs the Salesforce CLI (sfdx). More »
install-ssh-client.ps1 Installs a SSH client (needs admin rights). More »
install-ssh-server.ps1 Installs a SSH server (needs admin rights). More »
install-signal-cli.ps1 Installs the CLI edition of the Signal messenger. More »
install-updates.ps1 Installs updates (need admin rights). More »
install-wsl.ps1 Installs Windows Subsystem for Linux (WSL), needs admin rights. More »
list-apps.ps1 Lists the installed applications. More »
list-cli-tools.ps1 Lists installed command-line interface (CLI) tools. More »
list-dns-servers.ps1 Lists public DNS servers. More »
list-drives.ps1 Lists all drives. More »
list-network-shares.ps1 Lists all network shares of the local computer. More »
list-installed-software.ps1 Lists the installed software. More »
list-printers.ps1 Lists all printer known to the computer. More »
list-print-jobs.ps1 Lists all jobs of all printers. More »
list-processes.ps1 Lists the local computer processes. More »
list-services.ps1 Lists the services on the local computer. More »
list-system-info.ps1 Lists system information on the local computer. More »
list-tasks.ps1 Lists all Windows scheduler tasks. More »
list-timezone.ps1 Lists the current time zone details. More »
list-timezones.ps1 Lists all time zones available. More »
list-user-groups.ps1 Lists the user groups on the local computer. More »
new-power-plan.ps1 Creates a custom power plan based on the active one. More »
poweroff.ps1 Halts the local computer (needs admin rights). More »
query-smart-data.ps1 Queries the S.M.A.R.T. data of your HDD/SSD’s. More »
reboot.ps1 Reboots the local computer (needs admin rights). More »
remove-print-jobs.ps1 Removes all jobs from all printers. More »
restart-network-adapters.ps1 Restarts all local network adapters. More »
upgrade-ubuntu.ps1 Upgrades Ubuntu Linux to the latest (LTS) release. More »
wake-up-host.ps1 Wakes up a computer using Wake-on-LAN. More »
windefender.ps1 Turn Windows Defender on/off/check real time monitoring. More »

💻 Scripts for the Desktop

Script Description
close-calculator.ps1 Closes the calculator application. Read more »
close-cortana.ps1 Closes Cortana. More »
close-chrome.ps1 Closes the Google Chrome browser. More »
close-program.ps1 Closes the given program gracefully. More »
close-edge.ps1 Closes the Edge browser. More »
close-file-explorer.ps1 Closes Microsoft File Explorer. More »
close-firefox.ps1 Closes the Firefox browser. More »
close-microsoft-store.ps1 Closes the Microsoft Store app. More »
close-netflix.ps1 Closes the Netflix app. More »
close-onedrive.ps1 Closes Microsoft OneDrive. More »
close-serenade.ps1 Closes the Serenade application. More »
close-snipping-tool.ps1 Closes the Snipping Tool application. More »
close-spotify.ps1 Closes Spotify. More »
close-system-settings.ps1 Closes the System Settings window. More »
close-task-manager.ps1 Closes the Task Manager. More »
close-thunderbird.ps1 Closes Mozilla Thunderbird. More »
close-vlc.ps1 Closes the VLC media player application. More »
close-windows-terminal.ps1 Closes the Windows Terminal application. More »
enable-god-mode.ps1 Enables the god mode (adds a new icon to the desktop). More »
install-chrome.ps1 Installs the Google Chrome browser. Read more…
install-firefox.ps1 Installs the Firefox browser. Read more…
list-clipboard.ps1 Lists the contents of the clipboard. Read more…
new-email.ps1 Starts the default email client to write a new email. Read more…
open-amazon-website.ps1 Opens Amazon’s website. Read more…
open-default-browser.ps1 Launches the default Web browser. Read more…
open-calculator.ps1 Starts the calculator program. Read more…
open-c-drive.ps1 Opens the C: drive folder. Read more…
open-downloads-folders.ps1 Opens the user’s downloads folder. Read more…
open-dropbox-folder.ps1 Opens the user’s Dropbox folder. Read more…
open-edge.ps1 Launches the Edge browser. Read more…
open-email-client.ps1 Starts the default email client. Read more…
open-facebook-website.ps1 Opens Facebook’s website. Read more…
open-file-explorer.ps1 Opens the File Explorer. Read more…
open-firefox.ps1 Launches the Firefox browser. Read more…
open-fritz-box.ps1 Opens FRITZ!Box’s web interface. Read more…
open-github.ps1 Opens GitHub’s website. Read more…
open-google-contacts.ps1 Opens Google Contacts. Read more…
open-google-earth.ps1 Opens Google Earth. Read more…
open-google-mail.ps1 Opens Google Mail. Read more…
open-google-maps.ps1 Opens Google Maps. Read more…
open-google-news.ps1 Opens Google News. Read more…
open-google-play.ps1 Opens Google Play. Read more…
open-google-search.ps1 Opens Google Search. Read more…
open-google-translate.ps1 Opens Google Translate. Read more…
open-home-folder.ps1 Opens the user’s home folder. Read more…
open-music-folder.ps1 Opens the user’s music folder. Read more…
open-netflix.ps1 Starts the Netflix app. Read more…
open-microsoft-store.ps1 Launches the Microsoft Store app. Read more…
open-notepad.ps1 Starts the Notepad app. Read more…
open-onedrive-folder.ps1 Opens the user’s OneDrive folder. Read more…
open-pictures-folder.ps1 Opens the user’s pictures folder. Read more…
open-recycle-bin.ps1 Opens the user’s recycle bin folder. Read more…
open-repos-folder.ps1 Opens the user’s Git repositories folder. Read more…
open-snipping-tool.ps1 Starts the Snipping Tool. Read more…
open-speed-test.ps1 Opens Cloudflare’s speed test. Read more…
open-spotify.ps1 Opens Spotify. Read more…
open-system-settings.ps1 Opens the system settings of Windows. Read more…
open-task-manager.ps1 Starts the Task Manager. Read more…
open-videos-folder.ps1 Opens the user’s videos folder. Read more…
open-windows-terminal.ps1 Launches Windows Terminal. Read more…
open-wikipedia-website.ps1 Opens Wikipedia’s website. Read more…
open-youtube-website.ps1 Opens YouTube’s website. Read more…
remind-me.ps1 Creates a scheduled task that will display a popup message. Read more…
save-screenshot.ps1 Saves a single screenshot. Read more…
set-wallpaper.ps1 Sets the given image as wallpaper. Read more…

📁 Scripts for Files & Folders

Script Description
cd-autostart.ps1 Set the working directory to the user’s autostart folder. Read more »
cd-desktop.ps1 Set the working directory to the user’s desktop folder. More »
cd-docs.ps1 Set the working directory to the user’s documents folder. More »
cd-downloads.ps1 Set the working directory to the user’s downloads folder. More »
cd-dropbox.ps1 Set the working directory to the user’s Dropbox folder. More »
cd-home.ps1 Set the working directory to the user’s home folder. More »
cd-music.ps1 Set the working directory to the user’s music folder. Read more…
cd-onedrive.ps1 Set the working directory to the user’s OneDrive folder. Read more…
cd-pics.ps1 Set the working directory to the user’s pictures folder. Read more…
cd-recycle-bin.ps1 Set the working directory to the user’s recycle bin folder. Read more…
cd-repos.ps1 Change the working directory to the user’s Git repositories folder. Read more…
cd-repo.ps1 Change the working directory to the given Git repository folder. Read more…
cd-root.ps1 Set the working directory to the root directory. Read more…
cd-scripts.ps1 Set the working directory to the PowerShell Scripts folder. Read more…
cd-ssh.ps1 Set the working directory to the user’s SSH folder. Read more…
cd-up.ps1 Set the working directory to one directory level up. Read more…
cd-up2.ps1 Set the working directory to two directory levels up. Read more…
cd-up3.ps1 Set the working directory to three directory levels up. Read more…
cd-up4.ps1 Set the working directory to four directory levels up. Read more…
cd-videos.ps1 Set the working directory to the user’s videos folder. Read more…
check-symlinks.ps1 Checks every symlink in a directory tree. Read more…
check-xml-file.ps1 Checks the given XML file for validity. Read more…
clear-recycle-bin.ps1 Removes the content of the recycle bin folder (can not be undo!). Read more…
copy-photos-sorted.ps1 Copy image files sorted by year and month. Read more…
decrypt-file.ps1 Decrypts the given file. Read more…
download-dir.ps1 Downloads a directory tree from the given URL. Read more…
download-file.ps1 Downloads a file from the given URL. Read more…
edit.ps1 Edits the given file with the built-in text editor. Read more…
encrypt-file.ps1 Encrypts the given file. Read more…
get-md5.ps1 Prints the MD5 checksum of the given file. Read more…
get-sha1.ps1 Prints the SHA1 checksum of the given file. Read more…
get-sha256.ps1 Prints the SHA256 checksum of the given file. Read more…
inspect-exe.ps1 Prints basic information of the given executable file. Read more…
install-fonts.ps1 installs fonts and updates the registry. Read more…
list-dir-tree.ps1 Lists the directory tree content. Read more…
list-empty-dirs.ps1 Lists empty subfolders within the given directory tree. Read more…
list-empty-files.ps1 Lists empty files within the given directory tree. Read more…
list-files.ps1 Lists all files in the given folder and also in every subfolder. Read more…
list-folder.ps1 Lists the folder content. Read more…
list-hidden-files.ps1 Lists hidden files within the given directory tree. Read more…
list-recycle-bin.ps1 Lists the content of the recycle bin folder. Read more…
list-unused-files.ps1 Lists unused files in a directory tree. Read more…
list-workdir.ps1 Lists the current working directory. Read more…
make-install.ps1 Installs built executables and libs to the installation directory. Read more…
new-shortcut.ps1 Creates a new shortcut file. Read more…
new-symlink.ps1 Creates a new symbolic link file. Read more…
new-zipfile.ps1 Creates a new .zip file from a directory. Read more…
publish-to-ipfs.ps1 Publishes the given files or directory to IPFS. Read more…
remove-empty-dirs.ps1 Removes empty subfolders within the given directory tree. Read more…
replace-in-files.ps1 Search and replace a pattern in the given files by the replacement. Read more…
search-filename.ps1 Searches the directory tree for filenames by given pattern. Read more…
search-files.ps1 Searches the given pattern in the given files. Read more…
upload-file.ps1 Uploads the local file to the given FTP server. Read more…

♻️ Scripts to Convert Files

Script Description
convert-csv2txt.ps1 Converts a .CSV file to a text file. Read more »
convert-dir27z.ps1 Converts a directory tree to a compressed .7z file. Read more »
convert-dir2zip.ps1 Converts a directory tree to a compressed .ZIP file. Read more »
convert-history2ps1.ps1 Converts your command history to a PowerShell script. Read more »
convert-image2ascii.ps1 Converts images to ASCII art. Read more »
convert-images2webp.ps1 Converts images in a directory or a single image file to WebP format in parallel. More »
convert-mysql2csv.ps1 Converts a MySQL database table to a .CSV file. More »
convert-ps2bat.ps1 Converts a PowerShell script to a Batch script. More »
convert-ps2md.ps1 Converts the comment-based help of a PowerShell script to Markdown. More »
convert-md2docx.ps1 Converts Markdown file(s) to .DOCX format. Read more »
convert-md2html.ps1 Converts Markdown file(s) to HTML format. Read more »
convert-md2pdf.ps1 Converts Markdown file(s) to PDF format. Read more »
convert-sql2csv.ps1 Converts a SQL database table to a .CSV file. More »
convert-txt2wav.ps1 Converts text to a .WAV audio file. More »
export-to-manuals.ps1 Exports all scripts as manuals. More »

📝 Scripts for Git

Script Description
build-repo.ps1 Builds a Git repository. Read more »
build-repos.ps1 Builds all Git repositories in a folder. More »
check-repo.ps1 Checks a Git repository. More »
clean-repo.ps1 Cleans a Git repository from untracked files. More »
clean-repos.ps1 Cleans all Git repositories in a folder from untracked files. More »
clone-repos.ps1 Clones well-known Git repositories. More »
configure-git.ps1 Sets up the Git user configuration. More »
fetch-repo.ps1 Fetches updates for a Git repository. More »
fetch-repos.ps1 Fetches updates for all Git repositories in a folder. More »
list-branches.ps1 Lists all branches in a Git repository. More »
list-commit-stats.ps1 Lists a Git commit statistics. More »
list-commits.ps1 Lists all commits in a Git repository. More »
list-latest-tag.ps1 Lists the latest tag on the current branch in a Git repository. More »
list-latest-tags.ps1 Lists the latests tags in all Git repositories under a directory. More »
list-repos.ps1 Lists all Git repositories in a folder. More »
list-submodules.ps1 Lists all submodules in a Git repository. More »
list-tags.ps1 Lists all tags in a Git repository. More »
new-branch.ps1 Creates a new branch in a Git repository. More »
new-tag.ps1 Creates a new tag in a Git repository. More »
pick-commit.ps1 Cherry-picks a Git commit into multiple branches. More »
pull-repo.ps1 Pulls updates into a Git repository. More »
pull-repos.ps1 Pulls updates into all Git repositories in a folder. More »
remove-tag.ps1 Removes a tag in a Git repository. More »
switch-branch.ps1 Switches the branch in a Git repository. More »
sync-repo.ps1 Synchronizes a Git repository by pull & push. More »
write-changelog.ps1 Writes a changelog from Git commits. More »

🔎 Scripts for PowerShell

Script Description
daily-tasks.sh Execute PowerShell scripts automatically as daily tasks (Linux only). Read more »
introduce-powershell.ps1 Introduces PowerShell to new users. More »
list-aliases.ps1 Lists all PowerShell aliases. More »
list-automatic-variables.ps1 Lists the automatic variables of PowerShell. More »
list-cheat-sheet.ps1 Lists the PowerShell cheat sheet. More »
list-cmdlets.ps1 Lists the PowerShell cmdlets. More »
list-console-colors.ps1 Lists all console colors. More »
list-modules.ps1 Lists the PowerShell modules. More »
list-profiles.ps1 Lists your PowerShell profiles. More »
list-scripts.ps1 Lists all PowerShell scripts in this repository. More »
new-script.ps1 Creates a new PowerShell script. More »
set-profile.ps1 Updates your PowerShell user profile. More »

🛒 Various PowerShell Scripts

Script Description
add-memo.ps1 Adds the given memo text to $HOME/Memos.csv. Read more »
check-ipv4-address.ps1 Checks the given IPv4 address for validity. More »
check-ipv6-address.ps1 Checks the given IPv6 address for validity. More »
check-mac-address.ps1 Checks the given MAC address for validity. More »
check-subnet-mask.ps1 Checks the given subnet mask for validity. More »
check-weather.ps1 Checks the current weather for critical values. More »
display-time.ps1 Displays the current time for 10 seconds by default. Read more…
list-anagrams.ps1 Lists all anagrams of the given word. Read more…
list-city-weather.ps1 Lists the current weather of cities worldwide (west to east). Read more…
list-countries.ps1 Lists details of all countries. Read more…
list-credits.ps1 Shows the credits. Read more…
list-crypto-rates.ps1 Lists the current crypto exchange rates. Read more…
list-environment-variables.ps1 Lists all environment variables. Read more…
list-emojis.ps1 Lists the emojis of Unicode 13.0. Read more…
list-fritzbox-calls.ps1 Lists the FRITZ!Box calls. Read more…
list-fritzbox-devices.ps1 Lists FRITZ!Box’s known devices. Read more…
list-earthquakes.ps1 Lists earthquakes with magnitude >= 6.0 for the last 30 days. Read more…
list-exchange-rates.ps1 Lists the current exchange rates for the given currency. Read more…
list-memos.ps1 Lists the memos at $HOME/Memos.csv. Read more…
list-mysql-tables.ps1 Lists the MySQL server tables. Read more…
list-news.ps1 Lists the latest news. Read more…
list-os-releases.ps1 Lists operating system releases and download URL. Read more…
list-os-updates.ps1 Lists operating system updates. Read more…
list-passwords.ps1 Prints a list of random passwords. Read more…
list-pins.ps1 Prints a list of random PIN’s. Read more…
list-sql-tables.ps1 Lists the SQL server tables. Read more…
list-tiobe-index.ps1 Lists the TIOBE index of top programming languages. Read more…
list-weather.ps1 Lists the hourly weather. Read more…
locate-city.ps1 Prints the geographic location of the given city. Read more…
locate-ipaddress.ps1 Prints the geographic location of the given IP address. Read more…
locate-zip-code.ps1 Prints the geographic location of the given zip-code. Read more…
moon.ps1 Prints the current moon phase. Read more…
new-qrcode.ps1 Generates a new QR code image file. Read more…
reboot-fritzbox.ps1 Reboots the FRITZ!box device. Read more…
scan-ports.ps1 Scans the network for open/closed ports. Read more…
send-email.ps1 Sends an email message. Read more…
send-tcp.ps1 Sends a TCP message to the given IP address and port. Read more…
send-udp.ps1 Sends a UDP datagram message to the given IP address and port. Read more…
set-timer.ps1 Sets a timer for a countdown. Read more…
simulate-presence.ps1 Simulates the human presence against burglars. Read more…
start-calibre-server.ps1 Starts a local Calibre server. Read more…
start-ipfs-server.ps1 Starts a local IPFS server. Read more…
switch-shelly1.ps1 Switches a Shelly1 device in the local network. Read more…
translate-file.ps1 Translates the given text file into other languages. Read more…
translate-files.ps1 Translates the given text files into any supported language. Read more…
translate-text.ps1 Translates the given text in English into other languages. Read more…
weather.ps1 Prints the current weather forecast. Read more…
weather-report.ps1 Prints the local weather report. Read more…
what-is.ps1 Prints a description of the given abbreviation. Read more…
write-animated.ps1 Writes animated text. Read more…
write-big.ps1 Writes the given text in big letters. Read more…
write-blue.ps1 Writes the given text in a blue foreground color. Read more…
write-braille.ps1 Writes the given text in Braille. Read more…
write-calendar.ps1 Writes the calendar (month of year). Read more…
write-green.ps1 Writes the given text in a green foreground color. Read more…
write-joke.ps1 Writes a random Juck Norris joke. Read more…
write-lowercase.ps1 Writes the given text in lowercase letters. Read more…
write-marquee.ps1 Writes the given text as marquee. Read more…
write-morse-code.ps1 Writes the given text in Morse code. Read more…
write-motd.ps1 Writes the message of the day (MOTD). Read more…
write-quote.ps1 Writes a random quote. Read more…
write-red.ps1 Writes the given text in a red foreground color. Read more…
write-rot13.ps1 Encodes or decodes the given text with ROT13. Read more…
write-typewriter.ps1 Writes the given text with the typewriter effect. More »
write-uppercase.ps1 Writes the given text in uppercase letters. More »
write-vertical.ps1 Writes the given text in vertical direction. More »
show-notification-motivation-quote.ps1 Show notification with random cat picture and motivation quote. More »

📧 Feedback

Send your email feedback to: markus.fleschutz [at] gmail.com

🤝 License & Copyright

This open source project is licensed under the CC0-1.0 license. All trademarks are the property of their respective owners.

18023 / 7726 / 892

Регистрация: 25.12.2011

Сообщений: 11,502

Записей в блоге: 16

15.10.2012, 00:56. Показов 635252. Ответов 183

Метки acl, antihidden, cabinet archive, cacls, drive serial number, folder permissions, not responding, regsvr32, sfc /scannow, takeown, полезные bat/cmd скрипты (Все метки)


В этой теме выкладываем скрипты, которые часто используются Вами
или на Ваш взгляд могут иметь большое практическое значение.

Также приветствуются скрипты высокой степени сложности, полезные с точки зрения
изучения принципа их работы.

Правила темы:

  • При выкладывании скрипта постарайтесь тщательно описывать принцип его работы и по-больше комментировать строки Вашего кода.
  • Код, состоящий из > 4 строк, помещайте под теги [SPOILER=»Развернуть код…»]Ваш код[/SPOILER]. Также можно сделать 2 варианта: 1. Чистый код. 2. С комментариями.
  • Запрещаются любые обсуждения выложенных здесь работ;
  • если в этом есть необходимость, создайте отдельную тему в которой опишите замечание или проблему при работе с данным скриптом, указав ссылку на сообщение из этой темы (правый клик по слову «Permalink» вверху каждого сообщения).
  • Если Вы хотите внести исправление в выложенный Вами код — пишите мне в личку ссылку на Ваше старое сообщение и новый исправленный вариант. (полный вариант с тегами Вашего старого сообщения можно получить, нажав на него — кнопка «Цитата»).
  • Допускается размещение обзора программ, помогающих редактировать/отлаживать код.

Схожая тема: BAT/CMD файлы
Смежная тема: Полезные VBS скрипты и программы по работе с ними
Ссылка на набор полезных скриптов (предыдущая шапка от bombus) BAT/CMD файлы

*******************

Перечень полезных скриптов: *******************

Архивация и резервное копирование
Создание CAB-архивов ссылка

Безопасность
Удаление последствий вируса (фейковые папки на флешке) ALINK
Стать владельцем папки/файла, получить полные права (пункт контекстного меню (Reg-файл) ALINK
Смена владельца и прав на папку и ее содержимое, в которой запущен батник (Full Access <-> Read Only) ссылка

Дата, время
Конвертация даты/времени из/в UNIX-формат(в секундах после 1-янв-1970 00:00:00) ссылка

Интерфейс
Крутящаяся палка (имитация) ссылка
Вызов GUI диалогового окна выбора папки ссылка
Разноцветный вывод в консоли. ссылка Цветная роза. ссылка
Диалоговое меню выбора файла ссылка

Компиляция
Помощник компиляции исходных кодов С# (.cs) через консольный NET.FrameWork компилятор ссылка

Операционная система
Восстановление шрифтов после сбоя ссылка
Пищалка (сигнал встроенного динамика, подобие Beep) ссылка
Регистрация всех библиотек DLL и OCX ссылка
Проверка целостности системных файлов утилитой sfc /scannow с выводом лога и автоопределением месторасположения диска ссылка

Сеть
Подсчёт маски подсети на основании двух крайних значений диапазона. ALINK
Пакетное получение информации о IP-адресах и построение HTML-отчёта. ALINK
GetIP/GetMAC/Get default gateway ссылка

Процессы
Завершение процесса (с листингом и выбором через меню) ссылка
Многопроцессное создание пустых файлов (бенчмарк для винчестера) ссылка
Отслеживание зависшего процесса и его перезапуск с указанным приоритетом ссылка
Process Change Monitor (мониторинг и протоколирование изменений в списке запущенных процессов) ссылка

Текстовые операции, кодировка
Вывод текста без переноса на новую строку ALINK
Перекодировка CP OEM-866 <-> WIN-1251 — 1) CMD 2) VBA 3) ASM (exe+src) ссылка
Помощь по всем командам вашей версии Windows / DOS ссылка
Транслитерация файлов, в именах которых есть кириллица

(файловые операции) ссылка
Преобразование текстового файла в кодировку Unicode (файловые операции) ссылка
Перекодировщик Reversed Hex в символьную строку ссылка

Файловые операции, разделы
Взаимное копирование содержимого 2 папок друг в друга ALINK
Прогресс-бар копирования файлов ссылка
Циклическое копирование файлов по каталогам с ожиданием завершения их дозаписи в исходную папку. ссылка
Создание нуль-копии папки для выкладывания на форуме ссылка
Получение серийного номера всех съемных устройств и физических жестких дисков (не разделов). Получение имен разделов физических накопителей (кроме оптических). ссылка

Другое
Расчёт индекса массы тела и идеального веса ссылка



23



Dragokas

18023 / 7726 / 892

Регистрация: 25.12.2011

Сообщений: 11,502

Записей в блоге: 16

15.10.2012, 00:57

 [ТС]

Взаимное копирование содержимого 2 папок друг в друга

Критерий копирования при совпадении имен файлов: последняя дата модификации.

Использование:
Сохранить в файл Мое_Название_файла.CMD
Скопировать файл в папку № 1.
Перетянуть папку № 2 на этот сценарий.

Примечание: скрипт использует Robocopy.exe из пакета Windows Resource Kit (является родной для Windows 7)

Развернуть код …

Windows Batch file
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
@echo off
setlocal enabledelayedexpansion
set "cat=%~dp0"
set "cat=!cat:~0,-1!"
color 9E
echo                    by Alex Drago.kas
echo.
echo.
echo Реверсивная синхронизация файлов/папок.
echo.
echo Вам нужно объеденить содержимое двух папок так,
echo чтобы взаимозаменить новые файлы по дате модификации,
echo а также добавить новые?
echo.
echo.
:: 1. Поместите сценарий в папку № 1
:: 2. Опустите папку № 2 на этот сценарий.
if (%1)==() goto :noCat
echo.
echo Будут взаимообъединены файлы и папки в каталогах:
echo 1. !cat!
echo 2. %1
echo.
pause
robocopy "!cat!" "%1" /s /fft
robocopy "%1" "!cat!" /s /fft
echo.
echo Объединение завершено.
echo.
pause
goto :eof
 
:noCat
echo Не задана папка № 2 ...
echo ---------------------------------
echo 1. Поместите сценарий в папку № 1
echo 2. Опустите папку № 2 на этот сценарий.
echo.
pause

Вложения

Dual_Synhro.zip (586 байт, 646 просмотров)



3



Dragokas

18023 / 7726 / 892

Регистрация: 25.12.2011

Сообщений: 11,502

Записей в блоге: 16

15.10.2012, 02:41

 [ТС]

Удаление последствий вируса (поддельные «фейковые» папки на флешке)
19.11.2012 — Критическое обновление (запускать скрипт «от имени Администратора» теперь безопасно).
Автор: Dragokas

Использование:
Скопировать в корень съемного диска (USB Flash Drive).
Запустить.

Показания к применению:
Ваша флешка побывала на компьютере с вирусом, скрывающим папки, а вместо них — теперь ярлыки.
Вы хотите, чтобы на флешке физически нельзя было создать autorun.inf, который дает команду на запуск паразитов.

Функционал v.1.5.:
1. Удаление файлов с расширением *.lnk (ярлыки), соответствующих именам папок.
1.1. Удаление других *.lnk с запросом подтверждения от пользователя.
2. Снятие атрибутов «скрытый», «системный» с папок в корне флешки.
3. Удаление файла автозапуска «autorun.inf».
4. Создание папки «autorun.inf» (контр-мера против дальнейшей возможности создавать файл autorun.inf)

Папка содержит в свою очередь 3 неудаляемые штатными способами подпапки, создаваемые разными алгоритмами.
(папка с 2 точками на конце, папка с именем системного устройства и папка с измененными ACL-правами доступа).

5. Удаление всех файлов с расширением *.exe в корне папки C:\Users\Пользователь\AppData\Roaming (%appdata%) — это безопасно.
6. Завершение процесса Host.exe. Поиск и удаление рекурсивно всех файлов Host.exe (все действия с подтверждением от пользователя).
7. Удаление модифицированных системных папок «recycled» и «System Volume Information» без подтверждения.
(удаление папки корзины Windows («recycler») на оперируемом томе происходит с подтверждением).
8. Удаление дополнительных обычно вирусных файлов (System, Game.cpl) в режиме подтверждения.

Тонкости:
Учитываются особенности работы с именами, где используются буквы украинского алфавита и др. спецсимволы.
Если удаление не происходит с первого раза предпринимается попытка получить права на объект и сменить владельца.
Если и это не получается сделать, производится попытка удалить папку/файл в обход ограничений API-функций Windows на имена.

Основные изменения в update 1.5. (от 16.11.2012)
Исправлены ошибки с кавычками и др. недочеты.
Скрипт спрашивает разрешения и ничего лишнего точно не удалит.
Более быстрая работа.
Добавлена визуализация и %-ый прогрессбар.

Обсуждение скрипта ведется здесь (и последняя версия скрипта тоже): AntiHidden — Удаление последствий вируса (поддельные «фейковые» папки на флешке)

FAQ

Как удалить созданную программой папку Autorun.inf
— Не скажу А вообще проще отформатировать флешку

Программа работает слишком долго:
— Вероятно много папок/файлов или за Вами очень внимательно следит антивирус

Зачем удалять программы в корне папки %appdata% ?
— Некоторые вирусы, скрывающие папки, хранят свое тело в папке %appdata%
Другие пользовательские или системные программы в корне этой папки никогда не хранятся.

Листинг исходного кода v.1.5.1. ua:

В коде версии 1.5. использованы спецсимволы BackSpace, поэтому при прямом копировании кода Ваш батник работать не будет, как задумано.
(скачивайте через прикрепленный файл).

Bash
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
@echo off
Setlocal EnableDelayedExpansion EnableExtensions
mode con: cols=82 lines=30
title Anti Hidden Fast - Видалення наслiдкiв вiрусної дiяльностi ver.1.5.1
color 1a
echo                                        Maded by Alex Drago.kas -=2012=-
echo   Anti Hidden Fast v.1.5.1                     -= Зроблено в Українi :)
echo.
echo   Етап 1. Вiдновлення властивостей корневих папок.
echo.
echo   Будуть встановленi такi параметри:
echo   - не "Прихований"
echo   - не "Системний"
echo   + стати власником
echo   + надати повнi права
echo.
echo   Для прискорення операцiї можна тимчасово вимкнути антивiрусне ПЗ.
 
Call :StrOne "  Працюю з папкою:  "
<nul set /p text=%%
Call :StrOne " " new
 
Set Cur=%~dp0
Set Cur=%Cur:~0,-1%
 
::Оценка количества папок для прогресс-бара, запись первой порции папок в массив (Hidden)
chcp 1251>nul
for /f "delims=" %%i in ('dir "%Cur%" /b /a:dh 2^>nul') do (set /a folders+=1& Set F.!folders!=%Cur%\%%i)
 
chcp 866>nul
for /L %%A in (1,1,%folders%) do (
  set /a Progress=100*%%A/%folders%
  Call :StrOne "!Progress! - !F.%%A!"
  Call :RecovFolder "!F.%%A!"
)
 
chcp 1251>nul
for /f "delims=" %%i in ('dir "%Cur%" /b /a:ds 2^>nul') do (
   Call :StrOne "*** - %%i"
   Call :RecovFolder "%Cur%\%%i"
)
chcp 866>nul
Call :StrOne "100 - завершено.                                                                "
echo.
 
echo   Етап 2. Видалення зайвих ярликiв.
::chcp 1251>nul
::Удаление только ярлыков, имена которых соответствуют именам папок
for /f "delims=" %%i in ('dir "%Cur%" /b /a:d') do if exist "%Cur%\%%i.lnk" (
  call :killfile "%Cur%\%%i.lnk"
)
chcp 866>nul
 
echo   Етап 3. Блокування стороннiх активних процесiв та видалення їх джерела.
if exist %appdata%\*.exe (
  for /f "delims=" %%i in ('dir %appdata%\*.exe /b /a') do taskkill /im "%%i" /t /f
  call :killfile "%appdata%\*.exe"
)
 
echo   Етап 4. Видалення файлу автозапуску.
if not exist "%Cur%\autorun.inf\" if exist "%Cur%\autorun.inf" call :killfile "%Cur%\autorun.inf"
 
echo   Етап 5. Видалення модифiкованих системних папок i чужорiдних файлiв.
for %%a in ("recycled" "System Volume Information") do (
  if exist "%Cur%\%%~a\" Call :KillFolder "%Cur%\%%~a")
) 1>nul 2>&1
if exist "%Cur%\recycler\" (
  echo   Знайдено папку Recycler. Продовжити видалення корзини Windows для тому %~d0 ? 
  Set /p RecycleRemove="Натиснiть "Y" та кнопку {ENTER} "
  Echo.!RecycleRemove!|>nul find /i "y"&&Call :KillFolder "%Cur%\recycler"
)
 
for %%b in (game.cpl system *.lnk) do for /F "delims=" %%a in ('2^>nul dir "%Cur%\%%b" /b /a:-d') do (
  echo.
  echo Знайдено пiдозрiлий файл - %%a. 
  echo Для видалення натиснiть "Y" та кнопку {ENTER}
  (takeown /f "%Cur%\%%a"&echo y|cacls "%Cur%\%%a" /g %username%:f) 1>nul 2>&1
  del /f /p /A "%Cur%\%%a"
)
 
echo.
color 1b
echo   Етап 5.1. Пошук i видалення файлiв host.exe. Будь ласка, чекайте...
tasklist |1>nul 2>&1 FindStr /B /L /I /C:host.exe&&(
  Echo   В системi запущено пiдозрiлий процес Host.exe
  Set /p HostClose="  Завершити його? - натиснiть Y та {ENTER}"
  Echo.!HostClose!|>nul find /i "y"&&taskkill /im "host.exe" /t /f
)
(for /f "tokens=*" %%a in ('Dir /b /s /a:-d "%Cur%\host.exe"') Do (
  if not Defined HostAgree (
    Echo   Всi файли з iм'ям Host.exe будуть видаленi з носiя %~dp0% рекурсивно.
    Set /p HostAgree="Щоб продовжити натиснiть Y та {ENTER}"
    Echo.!HostAgree!|>nul find /i "y"||Goto :ExtHostSeek
  )
  Call :KillFile "%%a"
)) 2>nul
:ExtHostSeek
 
color 1a
echo   Етап 6. Створення захисного файлу автозапуску, що не видаляється
echo           штатними засобами.
if not exist "%Cur%\autorun.inf\" mkdir "%Cur%\autorun.inf" 1>nul 2>&1
if not exist "%Cur%\autorun.inf\Dragokas..\" mkdir "%Cur%\autorun.inf\Dragokas..\" 1>nul 2>&1
if not exist "%Cur%\autorun.inf\com1\" mkdir "\\?\%Cur%\autorun.inf\com1" 1>nul 2>&1
if not exist "%Cur%\autorun.inf\defence" (
  mkdir "%Cur%\autorun.inf\defence" 1>nul 2>&1
  echo y|1>nul 2>&1 cacls "%Cur%\autorun.inf\defence" /d Все
  echo y|1>nul 2>&1 cacls "%Cur%\autorun.inf\defence" /d All
)
 
echo.
echo Процедуру проведено. Програму буде закрито.
ping -n 3 localhost 1>nul 2>&1
color
goto :eof
 
:RecovFolder
attrib -s -h "%~1" 1>nul 2>&1
attrib "%~1"|>nul FindStr /BIR "....H.."
if %errorlevel%==0 (
    Call :GrantAccess "%~1"
    attrib -s -h "%~1" 1>nul 2>&1
  ) else (
  attrib "%~1"|>nul FindStr /BIR "...S..."&&(
    Call :GrantAccess "%~1"
    attrib -s -h "%~1" 1>nul 2>&1
    )
)
exit /b
 
:GrantAccess
takeown /f "%~1" /r /d y 1>nul 2>&1
echo y|cacls "%~1" /g %username%:f 1>nul 2>&1
exit /b
 
:KillFile
attrib -s -h "%~1" 1>nul 2>&1
del /F /Q "%~1" 1>nul 2>&1
if exist "%~1" (
  takeown /f "%~1"
  echo y|cacls "%~1" /g %username%:f
  del /F /Q /A "%~1"
) 1>nul 2>&1
if exist "%~1" (
  del /F /Q /A "\\?\%~1"
) 1>nul 2>&1
exit /b
 
:KillFolder
attrib -s -h "%~1" 1>nul 2>&1
rd /S /Q "%~1" 1>nul 2>&1
if exist "%~1" (
  takeown /f "%~1" /r /d y
  echo y|cacls "%~1" /g %username%:f
  rd /S /Q "%~1"
) 1>nul 2>&1
if exist "%~1" (
  rd /S /Q "\\?\%~1"
) 1>nul 2>&1
exit /b
 
:StrLen
::Вычисляет длину переменной.
::Результат записывается в переменную LastLen
set strString=%~1
set /a LastLen = 0
::Максимальная длина переменной = 1024 символа
for /l %%i in (0,1,1024) do (
  set strTempString=!strString:~%%i,1!
  if "!strTempString!" neq "" (
    set /a LastLen+=1
  )
)
exit /b 0
 
:StrOne
::%1 - строка, которую отображаем
::%2 - параметры:
::new - печатать рядом
::vblf - печатать с новой строки
::если опущен, то заменять предыдущий текст.
if "%2"=="new" (set /a conWidth-=%LastLen%& call :StrWrite "%~1" New& exit /b 0)
if "%2"=="crlf" (call :GetConsoleWidth& echo.&call :StrWrite "%~1" New& exit /b 0)
::если предыдущего текста не было, просто печатаем текст и записываем его длину
if not defined LastLen (call :GetConsoleWidth& call :StrWrite "%~1" New& exit /b 0)
::Переменная с БекСпейсами
Set BS=
::Набиваем нужным количеством БекСпейсов
for /l %%i in (1,1,%LastLen%) do (Set BS=!BS!)
::Возвращаем каретку назад
<nul set /p text=%BS%
Set /a LenBefore=%LastLen%
::Печатаем текст поверх старого
Call :StrWrite "%~1" Fill
::Если новый текст короче старого, нужно затереть оставшиеся символы
if %LenBefore% GTR %LastLen% (
  set Space=
  set /a n=%LenBefore%-%LastLen%
  rem Набиваем Space слева пробелами, а справа возратом каретки
  rem Нужно ее ведь затем вернуть в пред. позицию
  for /l %%i in (1,1,!n!) do (Set Space= !Space!)
  rem Знак подчеркивания + BackSpace здесь я использую для обхода ограничения
  rem т.к. иначе, если в начале строки мы захотим напечатать пробел - это не получится сделать
  rem Команда (<nul set /p text= Текст) выведет "Текст" без пробела!
  (<nul set /p text=_!Space!)
)
exit /b 0
 
:StrWrite
::Вычисляем длину напечатанной строки
Call :StrLen "%~1"
::Определяем поместится ли по ширине консоли
Set Text=%~1
if %LastLen% GTR %conWidth% (
  call set Text=!Text:~0,%conWidth%!
  set /a LastLen=%conWidth%
)
::Печатаем текст на той же строке
<nul set /p text=_%Text%
::Обнуляем переменную длины предыдущей строки
if "%2"=="New" set /a LenBefore=0
exit /b 0
 
:GetConsoleWidth
::Получение ширины консоли
For /F "skip=4 tokens=1,2" %%v In ('mode con') Do (
  Set /A conWidth=%%w-4
  Exit /B
)

Add. Перевод на русский v.1.4.:

Листинг (с переводом).

Bash
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
@echo off
title Anti Hidden Fast - Удаление следов вирусной деятельности ver.1.4
color 1a
echo                                        Maded by Alex Drago.kas -=2012=-
echo   Anti Hidden Fast v.1.4                       -= Сделано в Украине :)
echo.
echo   Этап 1. Возобновление свойств корневых папок.
echo.
echo   Будут установлены такие параметры:
echo   - не "Скрытый"
echo   - не "Системный"
echo   + стать собственником
echo   + предоставить полные права
echo.
echo   Для ускорения операции можно временно отключить антивирусное ПО.
chcp 1251>nul
for /f "delims=" %%i in ('dir /b /a:d') do (
for /f "delims={;}" %%s in ('attrib "%%i"') do (call :oper "%%s" "%%i")
)
chcp 866>nul
echo.
echo   Этап 2. Удаление лишних ярлыков.
 
chcp 1251>nul
for /f "delims=" %%i in ('dir /b /a:d') do if exist %%i.lnk call :killfile %%i.lnk
chcp 866>nul
 
echo   Этап 3. Блокирование сторонних активных процессов и удаление их источника.
if exist %appdata%\*.exe (
for /f "delims=" %%i in ('dir %appdata%\*.exe /b /a') do taskkill /im "%%i" /t /f
call :killfile %appdata%\*.exe
)
 
echo   Этап 4. Удаление файла автозапуска.
if not exist autorun.inf\ if exist autorun.inf call :killfile autorun.inf
::echo.
echo   Этап 5. Удаление модифицированных системных папок и инородных файлов.
for %%a in ("recycled" "recycler" "System Volume Information") do (
if exist %%a (takeown /f %%a /r /d y&echo y|cacls %%a /g %username%:f&attrib -s -h %%a&rd /s /q %%a)
) 1>nul 2>&1
for %%a in (game.cpl system) do (if exist %%a (
echo.
echo Найдено подозрительный файл - %%a. 
echo Для удаления нажмите "Y" и кнопку {ENTER}
(takeown /f %%a&echo y|cacls %%a /g %username%:f&&attrib -s -h %%a) 1>nul 2>&1
del /f /p %%a
))
echo.
color 1b
::echo   Этап 5.1. Поиск и удаление файлов host.exe. Пожалуйста, подождите...
tasklist |1>nul 2>&1 FindStr /B /L /I /C:host.exe&&taskkill /im "host.exe" /t /f
(for /f "tokens=*" %%a in ('Dir /b /s /a:-d host.exe') Do (
attrib -s -h "%%a" 1>nul 2>&1
del /f /q "%%a" 1>nul 2>&1
)) 2>nul
 
color 1a
echo   Этап 6. Создание защитного файла автозапуска, который не удаляется
echo           штатными средствами.
if not exist autorun.inf\ mkdir autorun.inf 1>nul 2>&1
if not exist autorun.inf\defence..\ mkdir autorun.inf\defence..\ 1>nul 2>&1
if not exist autorun.inf\com1\ mkdir "\\?\%~d0\autorun.inf\com1" 1>nul 2>&1
if not exist autorun.inf\123 (
mkdir autorun.inf\123 1>nul 2>&1
echo y|1>nul 2>&1 cacls "123" /d Все
echo y|1>nul 2>&1 cacls "123" /d All
)
echo.
echo Процедура проведена. Программа будет закрыта.
ping -n 3 localhost 1>nul 2>&1
color 07
goto :eof
 
:oper
echo %1|>nul FindStr /BIR ".....H."&&attrib -s -h %2 1>nul 2>&1
echo %1|>nul FindStr /BIR ".....H."&&(
takeown /f %2 /r /d y 1>nul 2>&1
echo y|>nul cacls %2 /g %username%:f
attrib -s -h %2 1>nul 2>&1
)
exit /b
 
:killfile
(attrib -s -h %1
del /F /Q %1||(takeown /f %1&echo y|cacls %1 /g %username%:f&&attrib -s -h %1&&del /F /Q %1)
) 1>nul 2>&1

Вложения

Anti_Hidden_fast_ua_v.1.5.1.rar (3.1 Кб, 1236 просмотров)
Anti_Hidden_fast_ru_v.1.5.1.rar (3.0 Кб, 2255 просмотров)



8



Dragokas

18023 / 7726 / 892

Регистрация: 25.12.2011

Сообщений: 11,502

Записей в блоге: 16

15.10.2012, 02:44

 [ТС]

Стать владельцем папки/файла, получить полные права (пункт контекстного меню)

Скрипт представляет из себе ключик реестра.
Установка:
Сохранить код в файл с расширением .REG
Запустить Reg-ключ и подтвердить импорт в реестр.

Использование:
Правый клик по нужному файлу/папке, выбрать «Стать владельцем и задать полный доступ к объекту».

Предназначение:
Назначает Вас владельцем указанной папки (файла).
«Сбрасывает» его/ее ACL-таблицу.

Показания к применению:
При попытке файловой операции над файлом/папкой появляется сообщение «У Вас недостаточно прав для выполнения данной операции». Бывает, когда копируете данные с другого компьютера.
Прим.: данное средство не позволяет переназначить права, если требуемый файл находится вне целевого компьютера (в локальной сети).

Ключик Nizaury Reg-Key Листинг:

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Windows Registry Editor Version 5.00
 
[HKEY_CLASSES_ROOT\*\shell\runas]
@="Стать владельцем и задать полный доступ к объекту"
"NoWorkingDirectory"=""
 
[HKEY_CLASSES_ROOT\*\shell\runas\command]
@="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant администраторы:F"
"IsolatedCommand"="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant администраторы:F"
 
[HKEY_CLASSES_ROOT\Directory\shell\runas]
@="Стать владельцем и задать полный доступ к объекту"
"NoWorkingDirectory"=""
 
[HKEY_CLASSES_ROOT\Directory\shell\runas\command]
@="cmd.exe /c takeown /f \"%1\" /r /d y && icacls \"%1\" /grant администраторы:F /t"
"IsolatedCommand"="cmd.exe /c takeown /f \"%1\" /r /d y && icacls \"%1\" /grant администраторы:F /t"

Автор: Nizaury

Смежный скрипт: Смена владельца и прав на папку и ее содержимое, в которой запущен батник

Вложения

Full_access.zip (403 байт, 1812 просмотров)



14



Anonymоus

612 / 92 / 14

Регистрация: 15.08.2012

Сообщений: 62

15.10.2012, 05:16

Подсчёт маски подсети на основании двух крайних значений диапазона.

Синтаксис — netmask.cmd <начало диапазона> <конец диапазона>
Вызов из другого скрипта — см. комментарии.

Развернуть код …

Bash
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
@Echo Off
:: Subnet mask from IP range
:: Inquisitor, 2012
:: Distributed under GNU GPL v2 license
:: [url]http://www.gnu.org/licenses/gpl-2.0.html[/url]
SetLocal EnableDelayedExpansion
Set NetworkHostBoundary=false
Set NetMask=
 
:: Если вызывается не из консоли, а из другого батника,
:: вызывать нужно из цикла for для корректной работы
:: Пример:
rem For /F %%A In ('netmask.cmd 192.168.1.0 192.168.8.255') Do Echo %%A
 
:: Проверка на запуск с аргументами
:: Если без аргументов - пример использования и выход
If "%*"=="" (Echo USAGE: %~nx0 192.168.1.0 192.168.3.255&GoTo :EOF)
 
:: Разбор входящих аргументов, cравнение начального и конечного
:: адресов по октетам
For /F "tokens=1-8 delims=. " %%A In ("%*") Do (
    Call :Mask %%A %%E
    Call :Mask %%B %%F
    Call :Mask %%C %%G
    Call :Mask %%D %%H
)
:: Вывод в stdout результата и выход, раскомментировать нужное
:: Вывод _БЕЗ_ перевода строки
<Nul Set /P Echo=!NetMask!
:: Вывод _С_ переводом строки
rem Echo !NetMask!
GoTo :EOF
 
 
:DEC2BIN
:: Функция перевода числа из десятеричной системы в двоичную
:: Принимает один аргумент, результат возвращается в %Result%
Set Result=
Set Data=%~1
:d2b_loop
:: Проверяем, есть ли остаток от деления
Set /A x1=Data/2
Set /A x2=x1*2
If "%x2%"=="%Data%" (Set Mod=0) Else (Set Mod=1)
:: Устанавливаем в качестве входных данных результат деления
Set Data=%x1%
:: Пишем результат поразрядно, в обратном порядке
Set Result=%Mod%%Result%
:: Следующая итерация или выход после окончания
If Not "%x1%"=="0" GoTo d2b_loop
:: Перед выходом - дополнение ведущими нулями до двух в восьмой
:: Требуется для корректного сравнения двух чисел без сдвига
Call :LeadingZero %Result%
GoTo :EOF
 
:BIN2DEC
:: Функция перевода числа из двоичной системы в десятеричную
:: Принимает один аргумент, результат возвращается в %Result%
Set Result=
:: Значение -1 для начала значения счетчика с нуля
Set i=-1
Set Data=%1
:b2d_loop
:: Получаем текущий разряд числа
Set /A i+=1
Set x1=%Data:~-1%
:: Используем бинарный сдвиг для получения степени двойки
Set /A x2="x1 * (1 << i)"
:: Добавляем к результату
Set /A Result+=%x2%
:: Следующая итерация или выход после окончания
If Not "%Data:~,-1%"=="" (Set Data=%Data:~,-1%&GoTo b2d_loop)
GoTo :EOF
 
:LeadingZero
:: Дополнение ведушими нулями до двух в восьмой (один байт)
:: Принимает один аргумент, результат возвращается в %Result%
Set Result=
Set Data=%~1
For /L %%A In (1,1,8) Do (
    If Not "!Data!"=="" (
        Set Result=!Data:~-1!!Result!
        Set Data=!Data:~,-1!
    ) Else (
        Set Result=0!Result!
    )
) 
GoTo :EOF
 
:FastCompare
:: Быстрое сравнение, если найдены различия - вызывается функция
:: более детального сравнения для поиска самого различия
:: Принимает два аргумента, результат возвращается в %Result%
If Not !NetworkHostBoundary!==true (
    If "%1"=="%2" (
        Set Result=11111111
        GoTo :EOF
    ) Else (
        Call :Compare %1 %2
    )
) Else (
    Set Result=00000000
)
GoTo :EOF
 
:Compare
:: Сравнение двух однобайтных чисел поразрядно, локализация начала различий
:: и забивание всего после первого различия нулями
:: Принимает два аргумента, результат возвращается в %Result%
:: Ведущие нули у обоих чисел обязательны
Set x1=%1&Set x2=%2
Set Result=
For /L %%A In (1,1,8) Do (
:: Получение ведущего разряда от каждого из чисел
    Set n1=!x1:~,1!
    Set n2=!x2:~,1!
:: Сравнение двух чисел и инвертирование бита
    Set /A Data="1 ^ (n1 ^ n2)"
:: Установка флага начала различия
    If !Data!==0 Set NetworkHostBoundary=true
:: Обнуление всех последующих после различия разрядов
    If !NetworkHostBoundary!==true Set Data=0
:: Поразрядная запись результата
    Set Result=!Result!!Data!
:: Устанавливаем остаток в качестве входных данных для следующей итерации
    Set x1=!x1:~1!
    Set x2=!x2:~1!
)
GoTo :EOF
 
:Mask
:: Генерация одного октета маски
:: Принимает два аргумента, результат дописывается к %NetMask%
Call :DEC2BIN %1&&Set From=!Result!
Call :DEC2BIN %2&&Set To=!Result!
Call :FastCompare !From! !To!
Call :BIN2DEC !Result!
If "!NetMask!"=="" (Set NetMask=!Result!) Else (Set NetMask=!NetMask!.!Result!)
GoTo :EOF

UPD. 26.04.13
Изменения: переписан вывод помощи и добавлен ключ для вывода маски в формате CIDR.

Использование:
netmask <начальный IP диапазона> <конечный IP диапазона>
netmask <начальный IP диапазона> <конечный IP диапазона> cidr

Примеры:

Bash
1
2
netmask 195.189.120.0 195.189.123.255 = 255.255.252.0
netmask 195.189.120.0 195.189.123.255 CIDR = /22

Развернуть код …

Bash
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
@Echo Off
:: # 
:: # Subnet mask from IP range v2.1
:: # Inquisitor, 2012-2013
:: # Distributed under GNU GPL v2 license
:: # [url]http://www.gnu.org/licenses/gpl-2.0.html[/url]
:: # 
:: # USAGE: NetMask.cmd first_ip_from_range last_ip_from_range
:: #        or, for display in CIDR format
:: #        NetMask.cmd first_ip_from_range last_ip_from_range cidr
:: # 
SetLocal EnableDelayedExpansion
Set NetworkHostBoundary=false
Set NetMask=
 
:: Если вызывается не из консоли, а из другого батника,
:: вызывать нужно из цикла for для корректной работы
:: Пример:
rem For /F %%A In ('netmask.cmd 192.168.1.0 192.168.8.255') Do Echo %%A
 
:: Проверка на запуск с аргументами
:: Если без аргументов - пример использования и выход
If "%*"=="" (
    For /F "tokens=1,* delims=#" %%A In ('FindStr /R /B "::.#" "%~dpnx0"') Do (
        Echo.%%B
    )
    GoTo :EOF
)
 
:: Разбор входящих аргументов, cравнение начального и конечного
:: адресов по октетам
For /F "tokens=1-9 delims=. " %%A In ("%*") Do (
    Call :Mask %%A %%E
    Call :Mask %%B %%F
    Call :Mask %%C %%G
    Call :Mask %%D %%H
    If /I "%%I"=="CIDR" Call :CIDR
)
:: Вывод в stdout результата и выход, раскомментировать нужное
:: Вывод _БЕЗ_ перевода строки
<Nul Set /P Echo=!NetMask!
:: Вывод _С_ переводом строки
rem Echo !NetMask!
GoTo :EOF
 
 
:DEC2BIN
:: Функция перевода числа из десятеричной системы в двоичную
:: Принимает один аргумент, результат возвращается в %Result%
Set Result=
Set Data=%~1
:d2b_loop
:: Проверяем, есть ли остаток от деления
Set /A x1=Data/2
Set /A x2=x1*2
If "%x2%"=="%Data%" (Set Mod=0) Else (Set Mod=1)
:: Устанавливаем в качестве входных данных результат деления
Set Data=%x1%
:: Пишем результат поразрядно, в обратном порядке
Set Result=%Mod%%Result%
:: Следующая итерация или выход после окончания
If Not "%x1%"=="0" GoTo d2b_loop
:: Перед выходом - дополнение ведущими нулями до двух в восьмой
:: Требуется для корректного сравнения двух чисел без сдвига
Call :LeadingZero %Result%
GoTo :EOF
 
:BIN2DEC
:: Функция перевода числа из двоичной системы в десятеричную
:: Принимает один аргумент, результат возвращается в %Result%
Set Result=
:: Значение -1 для начала значения счетчика с нуля
Set i=-1
Set Data=%1
:b2d_loop
:: Получаем текущий разряд числа
Set /A i+=1
Set x1=%Data:~-1%
:: Используем бинарный сдвиг для получения степени двойки
Set /A x2="x1 * (1 << i)"
:: Добавляем к результату
Set /A Result+=%x2%
:: Следующая итерация или выход после окончания
If Not "%Data:~,-1%"=="" (Set Data=%Data:~,-1%&GoTo b2d_loop)
GoTo :EOF
 
:LeadingZero
:: Дополнение ведушими нулями до двух в восьмой (один байт)
:: Принимает один аргумент, результат возвращается в %Result%
Set Result=
Set Data=%~1
For /L %%A In (1,1,8) Do (
    If Not "!Data!"=="" (
        Set Result=!Data:~-1!!Result!
        Set Data=!Data:~,-1!
    ) Else (
        Set Result=0!Result!
    )
) 
GoTo :EOF
 
:FastCompare
:: Быстрое сравнение, если найдены различия - вызывается функция
:: более детального сравнения для поиска самого различия
:: Принимает два аргумента, результат возвращается в %Result%
If Not !NetworkHostBoundary!==true (
    If "%1"=="%2" (
        Set Result=11111111
        GoTo :EOF
    ) Else (
        Call :Compare %1 %2
    )
) Else (
    Set Result=00000000
)
GoTo :EOF
 
:Compare
:: Сравнение двух однобайтных чисел поразрядно, локализация начала различий
:: и забивание всего после первого различия нулями
:: Принимает два аргумента, результат возвращается в %Result%
:: Ведущие нули у обоих чисел обязательны
Set x1=%1&Set x2=%2
Set Result=
For /L %%A In (1,1,8) Do (
:: Получение ведущего разряда от каждого из чисел
    Set n1=!x1:~,1!
    Set n2=!x2:~,1!
:: Сравнение двух чисел и инвертирование бита
    Set /A Data="1 ^ (n1 ^ n2)"
:: Установка флага начала различия
    If !Data!==0 Set NetworkHostBoundary=true
:: Обнуление всех последующих после различия разрядов
    If !NetworkHostBoundary!==true Set Data=0
:: Поразрядная запись результата
    Set Result=!Result!!Data!
:: Устанавливаем остаток в качестве входных данных для следующей итерации
    Set x1=!x1:~1!
    Set x2=!x2:~1!
)
GoTo :EOF
 
:Mask
:: Генерация одного октета маски
:: Принимает два аргумента, результат дописывается к %NetMask%
Call :DEC2BIN %1&&Set From=!Result!
Call :DEC2BIN %2&&Set To=!Result!
Call :FastCompare !From! !To!
Call :BIN2DEC !Result!
If "!NetMask!"=="" (Set NetMask=!Result!) Else (Set NetMask=!NetMask!.!Result!)
GoTo :EOF
 
:CIDR
:: Трансформация маски в формат CIDR
Set BinMask=
Set i=0
:: Разбираем маску обратно на октеты
Set NetMask=!NetMask:.= !
For %%A In (!NetMask!) Do (
    Call :DEC2BIN %%A
    :: И собираем бинарную маску
    Set BinMask=!BinMask!!Result!
)
:: Удаляем из неё незначащие нули, а единицы разделяем пробелами
Set BinMask=!BinMask:0=!
Set BinMask=!BinMask:1=1 !
:: Считаем единицы
For %%A In (!BinMask!) Do (Set /A i+=1)
:: Устанавливаем значение
Set NetMask=/!i!
Exit /B

.



2



612 / 92 / 14

Регистрация: 15.08.2012

Сообщений: 62

15.10.2012, 05:16

Пакетное получение информации о IP-адресах и построение HTML-отчёта.

Использование — поместить IP-адреса (по одному на строку) в файл iplist.txt, запустить masswhois.bat и дождаться завершения работы. Результат будет представлен в виде result.html
Если IP-адреса нужно выделить из общей массы текста, поместить текст в файл raw_data.txt и запустить get_all_ip.bat, список IP без дублей будет автоматически сгенерирован и передан на обработку masswhois.bat

В отчёте представлены: сам IP, его маска и диапазон, страна, имя подсети и адрес.

Использованные внешние утилиты — grep, uniqline, whosip, netmask.cmd



2



Dragokas

18023 / 7726 / 892

Регистрация: 25.12.2011

Сообщений: 11,502

Записей в блоге: 16

21.10.2012, 03:05

 [ТС]

Вывод текста без переноса на новую строку

Принцип подсмотрел у

alexii на сером форуме.

Код содержит невидимые символы BackSpace (0x08).
Поэтому, чтобы их увидеть, Ваш редактор должен их поддерживать.

Будет полезен для создания процентного прогрессбара
или указания на текущий обрабатываемый файл, если есть необходимость в экономии места на экране.
Это Lite-версия: не учитывает возможность превышения длиной выводимого текста ширины консольного окна.

Рабочий вариант качайте с файла.
Под спойлером код с комментариями. Он работать не будет, т.к. я заменил все BackSpace (0x08) на символ (0х20) для наглядности.
Чтобы поставить такой символ, достаточно нажать Alt + 8 (на цифровой клавиатуре).

Код — замените (0х20) на (0x08)

Bash
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
@Echo Off
Setlocal EnableExtensions EnableDelayedExpansion
pause>nul
:Start
Call :StrOne "Эти слова" new
pause>nul
Call :StrOne " написаны рядом" new
pause>nul
Call :StrOne "Это новая строка" crlf
pause>nul
Call :StrOne "Замена!!!"
pause>nul
Call :StrOne " Пишем рядом" new
pause>nul
Call :StrOne " И снова заменяем :)"
pause>nul
for /r c:\windows %%A in (*) do Call :StrOne "%%~nxA"
goto :eof
 
:StrLen
::Вычисляет длину переменной.
::Результат записівается в переменную LastLen
set strString=%~1
set /a LastLen = 0
::Максимальная длина переменной = 1024 символа
for /l %%i in (0,1,1024) do (
  set strTempString=!strString:~%%i,1!
  if "!strTempString!" neq "" (
    set /a LastLen+=1
  )
)
exit /b 0
 
:StrOne
::%1 - строка, которую отображаем
::%2 - параметры:
::new - печатать рядом
::vblf - печатать с новой строки
::если опущен, то заменять предыдущий текст.
if "%2"=="new" (call :StrWrite "%~1"& exit /b 0)
if "%2"=="crlf" (echo.&call :StrWrite "%~1"& exit /b 0)
::если предыдущего текста не было, просто печатаем текст и записываем его длину
if not defined LastLen (call :StrWrite "%~1"& exit /b 0)
::Переменная с БекСпейсами
Set BS=
::Набиваем нужным количеством БекСпейсов
for /l %%i in (1,1,%LastLen%) do (Set BS=!BS!)
::Возвращаем каретку назад
<nul set /p text=%BS%
::Печатаем текст поверх старого
<nul set /p text=_¶%~1
Set /a LenBefore=%LastLen%
Call :StrLen "%~1"
::Если новый текст короче старого, нужно затереть оставшиеся символы
if %LenBefore% GTR %LastLen% (
  set Space=
  set /a n=%LenBefore%-%LastLen%
  rem Набиваем Space слева пробелами, а справа возратом каретки
  rem Нужно ее ведь затем вернуть в пред. позицию
  for /l %%i in (1,1,!n!) do (Set Space= !Space!)
  rem Знак подчеркивания + BackSpace здесь я использую для обхода ограничения
  rem т.к. иначе, если в начале строки мы захотим напечатать пробел - это не получится сделать
  rem Команда (<nul set /p text= Текст) выведет "Текст" без пробела!
  (<nul set /p text=_¶!Space!)
)
exit /b 0
 
:StrWrite
::Печатаем текст на той же строке
<nul set /p text=_¶%~1
::Обнуляем переменную длины предыдущей строки
set /a LenBefore=0
::Вычисляем длину напечатанной строки
Call :StrLen "%~1"
exit /b 0

Вложения

BS.rar (577 байт, 415 просмотров)



2



18023 / 7726 / 892

Регистрация: 25.12.2011

Сообщений: 11,502

Записей в блоге: 16

27.10.2012, 02:37

 [ТС]

Циклическое копирование файлов по каталогам с ожиданием завершения их дозаписи в исходную папку.

Массовая рассылка файлов



0



Dragokas

18023 / 7726 / 892

Регистрация: 25.12.2011

Сообщений: 11,502

Записей в блоге: 16

02.11.2012, 18:00

 [ТС]

Перекодировка текста

Смотрите обновленную тему: Перекодировка текста (сборник кодов для различных кодовых страниц)

Из любой кодировки в любую (через утилиту win_iconv)

Скачать утилиту.

Синтаксис:

Bash

iconv [-c] [-s] [-f encoding] [-t encoding] [inputfile …]

Перечень кодировок:

Bash

iconv -l

Пример использования:

Bash

win_iconv -f UTF-16LE -t cp866 "UTFtext.txt" > "DOStext.txt"

Подробности в теме о ключах.

Win <-> OEM (неконсольный — на языке VBA)

Автор: Dragokas

Написан на VBA (Excel). Скачать.

Для работы необходимо включить макросы:
Для Office = 2003: Сервис -> Макрос -> Безопасность -> Выставить «Средний» или «Низкий».
Для Office > 2003 MSDN

Описание функций:

  • Перекодировка:
    — в Unicode.
    — Из OEM-866 -> в Win-1251
    — Из Win-1251 -> в OEM-866.
  • Таблица символов с их 10-ричным и 16-ым представлениями:
    — 1-байтовая;
    — 2-байтовая.

OEM-866 -> WIN-1251 (на CMD)

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@echo off
SetLocal
::Файл с кодировкой OEM-866
set FileIn=text.txt
::Результат, куда записывать WIN-1251
set FileOut=text.txt
 
chcp 866> nul
for /f "delims=" %%a in (%FileIn%) do (
  if not defined cpReady (
    chcp 1251> nul
    set CpReady=True
  )
  call :convert "%%a"  2>NUL
)
chcp 866> nul
goto :eof
 
:convert
echo.%~1>>"%FileOut%"

OEM-866 -> WIN-1251 (через утилиту на ASM)

Скачать to1251.zip. Самый быстрый перекодировщик. Написан на ассемблере =)

Автор:

Charles Kludge

Использование только через конвейер:

Bash

ipconfig /all | to1251.exe > result.txt

Bash

to1251.exe < file1.txt > result.txt

Исходник. Код ASM:

Assembler
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
format PE console 4.0
 
include 'win32a.inc'
 
next:   invoke  crt_getchar
    push    eax
    invoke  GetLastError
    or  eax, eax
    jnz exit
    pop eax
    call    recode
    invoke  crt_putchar, eax
    jmp next
exit:   
        invoke  ExitProcess,0
recode: 
    cmp eax,080h        ; rus cap 'A'
    jb  @5
    cmp eax,0afh         ; rus small 'п'
    ja  @1
    or  al,40h
@5: ret
@1:
    cmp al,0e0h     ; rus small 'р'
    jae @4
    mov al,20h      ; pseudoghaphic chrs 0xb0-0xdf -> <space>
    ret
@4: cmp al, 0efh    ; rus small 'я'
    ja  @3
    add al,10h
    ret
@3:     and ax, 0fh
    mov ebx, xlt
    xlatb   
@2:
    ret
xlt db  0a8h, 0b8h, 0aah, 0bah, 0afh, 0bfh, 0a1h, 0a2h, 0b0h, 95h, 0b7h,20h,0b0h,0a4h,20h,20h
 
; import data in the same section
 data import
 
 library kernel32,'KERNEL32.DLL',\
     msvcrt,'MSVCRT.DLL'
 
 import kernel32,\
        ExitProcess,'ExitProcess',\
        GetLastError,'GetLastError'
 
 import msvcrt,\
    crt_getchar,'getchar',\
    crt_putchar, 'putchar'
end data

Win-1251 -> в Unicode (UTF-16LE) (на CMD)

С возможностью указать исходную кодовую страницу:

Использование:

Bash

Batch.cmd infile outfile src_codepage

где:

Batch.cmd — сам Batch-файл
infile — файл для перекодировки
outfile — выходной файл
src_codepage — необязательный параметр. Номер кодовой страницы исходного файла.

2 варианта кода:

1) Исходник кода сохранить в кодировке WIN-1251:

Bash
1
2
3
4
5
6
7
8
9
10
11
@echo off
:: преобразование текстового файла в unicode (utf-16 LE)
:: вызов: to_uni infile outfile codepage
:: BAT-файл должен быть сохранен в кодировке WIN-1251
SetLocal
For /f "tokens=2 delims=:" %%G in ('CHCP') do Set _codepage=%%G
chcp 1251 >nul
CMD.EXE /D /A /C (set /p=яю)<NUL > "%~2"
CHCP %~3 >NUL
CMD.EXE /D /U /C TYPE "%~1" >> "%~2"
CHCP %_codepage% >NUL

2) исходник кода сохранить в кодировке OEM-866:

Bash
1
2
3
4
5
6
7
8
9
10
11
@echo off
:: преобразование текстового файла в unicode (utf-16 LE)
:: вызов: to_uni infile outfile codepage
:: BAT-файл должен быть сохранен в кодировке OEM-866
SetLocal EnableExtensions
For /f "tokens=2 delims=:" %%G in ('CHCP') do Set _codepage=%%G
chcp 866 >nul
for /F %%? in ('echo яю') do chcp 1251 >nul& CMD.EXE /D /A /C (set /p=яю)<NUL > "%~2"
CHCP %~3 >NUL
CMD.EXE /D /U /C TYPE "%~1" >> "%~2"
CHCP %_codepage% >NUL

Как настроить кодировку исходного кода Batch-файла, какой выбрать редактор: Русский текст в консоли

UTF-8 -> Win-1251 (cmd)

От Smitis

Bash
1
2
3
4
5
6
:: UTF-8 -> ANSI
@echo off
chcp 65001 > nul
cmd /u /c type utf8.txt > tmp.txt
chcp 1251 > nul
type tmp.txt > ansi.txt

UTF-16 -> OEM-866 (cmd)

Bash
1
cmd /a /c type utf16.txt > 866.txt

UTF-16 -> Win-1251 (cmd)

Bash
1
2
chcp 1251
cmd /a /c type utf16.txt > 866.txt

Вложения

FromUnicode (конвертор)2.rar (59.5 Кб, 677 просмотров)



4



Dragokas

18023 / 7726 / 892

Регистрация: 25.12.2011

Сообщений: 11,502

Записей в блоге: 16

12.11.2012, 07:27

 [ТС]

Завершение процесса (оформлено в виде меню).

Развернуть код

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@echo off
SetLocal EnableDelayedExpansion
:begin
cls
For /F "tokens=1 delims=," %%p In ('tasklist /FO CSV /nh^|sort') Do (
  Set nam=%%p
  Set /A nn+=1
  set proc!nn!=%%p
  echo !nn!. %%~p
)
:start
set /p kill=Введите номер процесса, который нужно завершить:
if "%kill%"=="" goto :start
echo Выбран !proc%kill%!. Уверены? (нажмите ENTER)
echo.
pause
taskkill /f /im !proc%kill%! /T
goto begin

Миниатюры

 



4



18023 / 7726 / 892

Регистрация: 25.12.2011

Сообщений: 11,502

Записей в блоге: 16

12.11.2012, 07:57

 [ТС]

Крутящаяся палка (имитация).
Автор: sov44

По типу — песочные часы в Windows =))



4



Dragokas

18023 / 7726 / 892

Регистрация: 25.12.2011

Сообщений: 11,502

Записей в блоге: 16

12.11.2012, 09:10

 [ТС]

Создание CAB-архивов
(в т.ч. самораспаковующихся EXE).
а также распаковка CAB.

Автор:

Alex Averchenkoff

Развернуть код

Bash
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
@echo **************************************************
@echo ((((((((((((((((((((((((((((((((((((((((((((((((((
@echo Name:         CabMaker.exe
@echo Description:  A program for creating cab archives 
@echo Version:      v. 1.0.0.0
@echo Copyright:    @Alex Averchenkoff
@echo Create:       2011
@echo ))))))))))))))))))))))))))))))))))))))))))))))))))
@echo **************************************************
 
@echo off
 
set SaveName=""
 
rem ******************************************************
rem СТАРТОВЫЙ БЛОК - ВЫБИРАЕМ ДЕЙСТВИЕ:ПРОСМОТР\РАСПАКОВКА\СОЗДАНИЕ АРХИВА
rem ******************************************************
:start
echo.
set /p action=VIEW-1^|EXPAND-2^|CREATE-3:
if /i "%action%"=="1" (goto view) 
if /i "%action%"=="2" (goto extract) 
if /i "%action%"=="3" (goto create) 
exit 
 
rem ******************************************************
rem ПРОСМОТР CAB АРХИВА
rem ******************************************************
:view
set /p name=ENTER NAME ARCHIVE:
if "%SaveName%"=="" ( set SaveName=%name%)
if "%name%"=="" ( set name=%SaveName%)
if not "%name%"=="" (expand -D %name%.cab) else ( goto view)
 
if errorlevel 0 (goto action) 
if errorlevel 1 (@echo An error occurred, try again)
 
rem ******************************************************
rem РАСПАКОВКА CAB АРХИВА - ФАЙЛЫ РАСПАКОВЫВАЮТСЯ В ДИРЕКТОРИЮ ОДНОИМЕННУЮ С ИМЕНЕМ АРХИВА
rem ******************************************************
:extract
set /p name=ENTER NAME ARCHIVE:
if "%SaveName%"=="" ( set SaveName=%name%)
if "%name%"=="" ( set name=%SaveName%)
if not "%name%"=="" (md "%~dp0%name%" && expand %name%.cab /F:*  .\%name%) else ( goto extract)
 
 
if errorlevel 0 (@echo Archive successfully unzipped! & goto action) 
if errorlevel 1 (@echo An error occurred, try again)
 
:action
echo You want to continue or exit the program?
set /p action=TO CONTINUE OR EXIT? [Y\N]:
if /i "%action%"=="Y" (goto start) else exit
 
rem ******************************************************
rem СОЗДАНИЕ НОВОГО CAB АРХИВА  - СОЗДАЕТСЯ В ПАПКЕ РАСПОЛОЖЕНИЯ БАТНИКА
rem ******************************************************
:create
set /p name=ENTER NAME FOR ARCHIVE:
if "%SaveName%"=="" ( set SaveName=%name%)
if "%name%"=="" ( set name=%SaveName%)
if "%name%"=="" ( goto create)
 
rem ******************************************************
rem БУДЕМ ЛИ СОЗДАВАТЬ РАСПАКОВЫВАЮЩИЙСЯ АРХИВ
rem ******************************************************
set /p sfx=CREATE SFX?[Y\N]:
 
if /i "%sfx%"=="Y" (@echo  Initiated the creation of self-extracting archive)
echo.
rem ******************************************************
rem СОЗДАЕМ СПИСОК ФАЙЛОВ И ФАЙЛ ОТВЕТОВ ДЛЯ MAKECAB
rem ******************************************************
@echo  .Set CabinetNameTemplate=%name%.cab>make.ddf
@echo  .Set CompressionType=MSZIP>>make.ddf
@echo  .Set MaxDiskSize=CDROM>>make.ddf
@echo  .Set ReservePerCabinetSize=6144>>make.ddf
@echo  .Set Compress=on>>make.ddf
@echo  .Set CompressionMemory=21>>make.ddf
@echo  .Set DiskDirectoryTemplate=".">>make.ddf
@echo  .Set Cabinet=ON>>make.ddf
@echo  .Set MaxCabinetSize=999999999>>make.ddf 
@echo  .Set CompressionLevel=^7>>make.ddf
 
rem ******************************************************
rem СОЗДАЕМ ОБЫЧНЫЙ АРХИВ
rem ******************************************************
chcp 1251>nul
FOR /R %%f IN (*.*) DO  (
    If not "%%~nxf"=="make.ddf" (
       @If not "%%~nxf"=="CabMaker.bat" (@echo "%%f">>make.ddf))
    )
makecab /F make.ddf
if /i "%sfx%"=="Y" (goto create_sfx) else ( goto clear)
 
:clear
del setup.inf
del setup.rpt
del make.ddf
chcp 866 > nul
echo.
echo Creating a backup is successfully completed!
goto action
 
 
rem ******************************************************
rem МАГИЕЙ ПРЕВРАЩАЕМ ОБЫЧНЫЙ АРХИВ В САМРАСПАКОВЫВАЮЩИЙСЯ  :-)
rem ******************************************************
:create_sfx
copy /b %windir%\system32\extrac32.exe+%name%.cab %name%.exe
del setup.inf
del setup.rpt
del make.ddf
del %name%.cab
chcp 866 > nul
echo.
echo Create self-extracting archive completed successfully!
goto action

Вложения

CabMaker.zip (1.4 Кб, 804 просмотров)



3



Dragokas

18023 / 7726 / 892

Регистрация: 25.12.2011

Сообщений: 11,502

Записей в блоге: 16

18.11.2012, 06:05

 [ТС]

Смена владельца и прав на папку и ее содержимое, в которой запущен батник (Full Access <-> Read Only)
Автор: Dragokas

Обновлено 20.11.2012. Добавлена совместимость с XP и Server 2003.

1) RO.cmd (ReadOnly) — делает все файлы и папки доступными только для чтения и выполнения.
Дополнительно разрешается в текущей папке — создавать файлы.
Все остальные операции, в т.ч. и создание файлов в подкаталогах — запрещено.

2) FA.cmd (FullAccess) — восстанавливает полный доступ для всех пользователей.

Для нормальной работы в ОС Windows Vista, Win 7 батник нужно запускать правой кнопкой мыши «От имени Администратора».
FA.cmd будет работать после блокировки RO.cmd-хой только при запуске от Админа.

Как пользоваться:
Файл множество раз протестирован и безопасен, если будете придерживаться правила:
Запускать батник только из той папки, в которой нужно ограничить доступ (RO.cmd) или получить полные права (FA.cmd).
Работает рекурсивно для всех подкаталогов, начиная с каталога, где находится батник.

Для корректной работы, вероятно, понадобится утилита из Microsoft Support Tools — ICACLS (включена в ОС Windows Server 2003, начиная с SP2).

Поддержка:
Скрипт протестирован в средах английской и русской локализаций, а также:
1) Windows XP SP2
2) Windows Server 2003 SP2
3) Windows 7 SP1

Исходный код

Сохранять в кодировке OEM-866.

FA.cmd

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@echo off
if "%1"=="" (
  Echo Working...
  Call "%~dpnx0" 0 1>nul 2>&1
  Echo Ready...
  Goto :eof
)
 
Setlocal Enableextensions
 
Set Cur=%~dp0
Set Cur=%Cur:~0,-1%
 
takeown /f "%Cur%" /r /d y
 
icacls "%Cur%" /grant All:f /T /C
icacls "%Cur%" /grant Все:f /T /C

RO.cmd

Bash
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
@echo off
if "%1"=="" (
  Echo Working...
  Call "%~dpnx0" 0 1>nul 2>&1
  Echo Ready...
  Goto :eof
)
 
Setlocal Enableextensions
 
Set Cur=%~dp0
Set Cur=%Cur:~0,-1%
 
takeown /f "%Cur%" /r /d y
 
icacls "%Cur%" /deny All:(DE,WDAC,WO,AS,WD,AD,WEA,DC,WA) /T /C
icacls "%Cur%" /deny Все:(DE,WDAC,WO,WD,AS,AD,WEA,DC,WA) /T /C
 
icacls "%Cur%" /grant All:(RC,S,GR,GW,GE,RD,REA,X,RA) /T /C
icacls "%Cur%" /grant Все:(RC,S,GR,GW,GE,RD,REA,X,RA) /T /C
 
icacls "%Cur%" /grant All:(WD) /C
icacls "%Cur%" /grant Все:(WD) /C
 
icacls "%~dpnx0" /grant:r Все:f /C
icacls "%~dpnx0" /grant:r All:f /C

В коде использован метод двойного запуска скрипта исключительно для упрощения
перенаправления потока вывода в NUL.
Метод «обворачивания» скобками приводил к синтаксическим ошибкам в силу
некоторых особенностей работы утилиты ICACLS.

Обсуждение скрипта в теме: Смена владельца и прав на папку и ее содержимое

Вложения

Access.zip (671 байт, 1103 просмотров)
icacls.exe — Vista — Windows 7.zip (14.3 Кб, 775 просмотров)
icacls.exe — XP — Server 2003.zip (13.9 Кб, 465 просмотров)



7



18023 / 7726 / 892

Регистрация: 25.12.2011

Сообщений: 11,502

Записей в блоге: 16

26.11.2012, 13:41

 [ТС]

Пищалка (подобие beep)
на простой команде Эхо.

Блокнотом Windows не редактировать!
(использован служебный символ &H07 и кодовая страница OEM-866)

Из командной строки звук можно симмитировать нажатием Ctrl+G, {ENTER}.



5



khaarax

7 / 3 / 0

Регистрация: 09.12.2012

Сообщений: 5

09.12.2012, 23:00

Вызов GUI диалогового окна выбора папки
Это HTA-обертка на JavaScript-е для открытия диалогового окна выбора папки через объект WshShell.

Развернуть код

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@echo off
setlocal
 
for /f "tokens=2 delims=:" %%i in ('chcp') do (
    set sPrevCP=%%i
    chcp 1251 >nul
)
 
for /f "usebackq delims=" %%i in (
    `@"%systemroot%\system32\mshta.exe" "javascript:var objShellApp = new ActiveXObject('Shell.Application');var Folder = objShellApp.BrowseForFolder(0, 'SELECT FOLDER',1, '::{20D04FE0-3AEA-1069-A2D8-08002B30309D}');try {new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(Folder.Self.Path)};catch (e){};close();" ^
    1^|more`
) do set sFolderName=%%i
 
chcp %sPrevCP% >nul
 
if defined sFolderName (
    echo Выбрана папка: %sFolderName%
) else (
    echo Папка не была выбрана.
)
pause

Копирайты не помню чьи.

Миниатюры

 



3



Dragokas

18023 / 7726 / 892

Регистрация: 25.12.2011

Сообщений: 11,502

Записей в блоге: 16

30.12.2012, 04:46

 [ТС]

Многопроцессное создание пустых файлов (бенчмарк для винчестера)
Код от: Dragokas
Спасибо Petya V4sechkin (OSZone) за ценную подсказку о синтаксисе запуска процесса.

P.S. Ниже «процессы» названы «потоками» (простите за эту глупую опечатку).

Настраиваемые параметры:
Set Dest=y:\m2 — каталог, в котором создавать файлы
Set /A Potok=50 — общее кол-во запускаемых потоков
Set /A PotokMax=8 — максимальное кол-во одновременно запускаемых потоков
Set /A Range=10000 — кол-во пустых файлов, создаваемых каждым потоком.

Развернуть код

Bash
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
::Многопотоковое создание пустых файлов ::by Alex Drago.kas
@echo off
Setlocal EnableDelayedExpansion EnableExtensions
Set Dest=y:\m2
Set /A Potok=50
Set /A PotokMax=8
Set /A Range=10000
 
if not exist "%Dest%" md "%Dest%"
::1 из потоков - управляющий (этот код) + 1(?не знаю почему)
Set /A PotokMax+=2
 
Set TimeS=%Time%
Call :TimeToMSec "%TimeS%" TimeS_ms
Echo Задание начато в %TimeS%
 
Set /A sS=0
For /L %%P in (1,1,%Potok%) do (
  Set /A sE=!sS!+%Range%-1
  start "Stream %%P" /min "CMD /Q /C For /L %%N in (!sS!,1,!sE!) do cd.>%Dest%\%%N"
  Set /A sS+=%Range%
  Echo Запущен поток № %%P
  Call :WaitForReady %PotokMax%
)
Echo Все потоки запущены.
Echo Ожидаю завершения заданий.
 
Call :WaitForReady 3&:: (+1 ?не знаю почему)
 
Set TimeE=%Time%
Call :TimeToMSec "%TimeE%" TimeE_ms
 
Echo Задание  начато  в  %TimeS%
Echo Задание завершено в %TimeE%
 
Set /A diff=TimeE_ms-TimeS_ms
Set /A diffSS=diff/100
Set /A diffms=%diff% %% 100
Set /A TotalFiles=Potok*Range
Set /A Speed=TotalFiles*100/diff
Echo Записано %TotalFiles% файлов.
Echo Затрачено: %diffSS%,%diffms% с.
Echo Скорость:  %Speed% файлов/с.
Echo.
pause
Goto :eof
 
:WaitForReady %PotokMax%
Set /A n=0
For /F "Delims=" %%A in ('tasklist^|Findstr /BLIC:cmd.exe') do (Set /A n+=1)
if %n% LSS %~1 Exit /B
ping -w 100 -n 1 192.168.254.254> nul
Goto :WaitForReady
 
:TimeToMSec %Time% %var_mSec%
For /F "Tokens=1-4 Delims=,:" %%A in ("%~1") do (
  Set /A HH=%%A
  Set MM=1%%B& Set /A MM=!MM!-100
  Set SS=1%%C& Set /A SS=!SS!-100
  Set mS=1%%D& Set /A mS=!mS!-100
)
Set /A %~2=(HH*60*60+MM*60+SS)*100+mS
Exit /B

В поданном коде создается 50*10000 = 0,5 млн. файлов, так что попытавшись открыть такую папку даже файловым менеджером все напрочь зависнет.
Чтобы удалить созданные файлы, прилагаю еще один бат-файл, который визуально отображает %-ый индикатор завершения удаления файлов.

Результаты тестов на моем SSD :)

Индикация процесса удаления папки

Развернуть код…

Bash
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
::Индикация процесса удаления папки
@echo off
Set Fold=y:\m2
 
Echo Удаляю каталог %Fold%
Start /min cmd /c "rmdir /s /q "%Fold%"& exit"
 
Call :Count
Set /A Full=%n%
Echo 0%% - %Full% files
 
:Continue
Call :Count
Set /A Percent=100-(%n%*100/%Full%)
Echo %Percent%%%
ping -w 1000 -n 1 192.168.254.254> nul
if %n% neq 0 Goto :Continue
Echo.
Echo Ends.
pause
 
:Count
Set /A n=0
if not exist "%Fold%" Exit /B
dir /b "%Fold%">"%temp%\files.tmp"
for /F "Delims=" %%A in ('find /v /c ""^<"%temp%\files.tmp"') do (Set /A n=%%A)
::for /F "UseBackQ Delims=" %%A in ("%temp%\files.tmp") do @Set /A n+=1
Exit /B

Вложения

Speed.zip (1.5 Кб, 449 просмотров)



5



Dragokas

18023 / 7726 / 892

Регистрация: 25.12.2011

Сообщений: 11,502

Записей в блоге: 16

03.01.2013, 02:43

 [ТС]

Помощник компиляции исходных кодов и проектов .NET (.cs / .sln (C#, VB.NET)) через консольный NET.FrameWork компилятор (csc или msbuild)
Автор: Dragokas

UPD. 02.03.2017 — добавил скрипт для msbuild.

Зачем нужен:
Например, в системе не установлена MS Visual Studio или другая среда разработки.

Требования:
Установленный NET.FrameWork, в некоторых случаях Windows SDK.

Использование:
1. Перетянуть на данный скрипт файл с исходным кодом C# (.cs / .sln) — «Drag & Drop»
2. Либо задать как аргумент в консоли, например, compile.cmd source.cs

Функционал:
Компиляция исходного кода C# с помощью консольного CSC.exe (msbuild) компилятора.
Все версии FrameWork-а скрипт находит в папке windows\microsoft.net, после чего дает Вам выбор какой версией компилировать и запоминает ее.
Ведет файл-протокола ошибок в DOS (CP-866) и WIN (CP-1251) кодировках и предлагает его сохранить.
Ошибки выводит также на экран. В случае их отсутствия, скрипт завершает работу без ожидания.

Внутри скрипта есть некоторые комментарии по детальным настройкам.

Кликните здесь для просмотра всего текста

Bash
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
@echo off& :: by Alex Dragokas -02.01.2013-
::Помощник компиляции исходников C#
Setlocal EnableDelayedExpansion EnableExtensions
 
::Задайте путь к файлу настроек скрипта
set FWCompilerPath=%temp%\FWCompile.cfg
::Задайте здесь полный путь к компилятору, либо он будет найден и сохранен автоматически в файл FWCompile.cfg
::set FWExec=c:\Windows\Microsoft.NET\Framework\v3.5\csc.exe
::Путь к временным файлам протокола ошибок
set log866=%temp%\compile_err866.log
set log1251=%temp%\compile_err.log
 
Echo Помощник компиляции исходных файлов C# (.cs)
Echo.
if "%1"=="" (
  Echo Перетяните исходный файл .cs на этот скрипт ^(Drag ^& Drop^),
  Echo или задайте его как аргумент, например "%~nx0" "c:\temp\source.cs"
  Echo.& pause& Goto :eof
)
 
::Если путь указан в шапке
if Defined FWExec goto :begin
::Читаю путь к компилятору из файла настроек
if exist "%FWCompilerPath%" for /f "UseBackQ delims=" %%A in ("%FWCompilerPath%") do set FWExec=%%A& goto :begin
 
Echo Выберите версию FrameWork, с помощью которой по-умолчанию будет компилироваться исходник
Echo.
for /f "delims=" %%A in ('dir /b /s /a:-d "%windir%\Microsoft.NET\csc.exe"') do (
  Set /A n+=1
  Set FW!n!=%%A
  for /f "tokens=4,5 delims=" %%r in ("%%A") do (
    echo %%r|find "64">nul
    if !errorlevel!==0 (set arch=x64) else (set arch=x32)
    echo !n!. !arch! %%s
  )
)
if not Defined n (Echo На компьютере не обнаружен установленный FrameWork& Echo.& pause& goto :eof)
Echo.
:FWenter
Set /p FWver="Ожидаю ввода: "
if "%FWver%"=="" Goto :FWenter
if %FWver% LSS 0 Goto :FWenter
if %FWver% GTR %n% Goto :FWenter
set FWExec=!FW%FWver%!
Echo %FWExec%> "%FWCompilerPath%"
 
::Дополнительные параметры
::/unsafe - компиляция блоков с прямым доступом к памяти
::/reference:"%Ref%\addon.dll" - подключить дополнительный модуль
::/target:library - скомпилировать как библиотеку классов; winexe - исполнительный файл Windows
::/res:"file.mp3" - внедрить в ресурсы внешний файл
::/debug - отображать отладочную информацию
::/warn:0 - уровень предупреждений
::/nologo - не отображать информацию об авторских правах
:begin
"%FWExec%" /target:exe /nologo /out:"%~dpn1.exe" "%~dpnx1" 1>"%log866%" 2>&1
if %errorlevel% neq 0 (
  Call :Recode
  Echo Во время компиляции возникла ошибка
  Echo.
  Type "%log866%"
  Echo.
  (set /p key=Нажмите Y, чтобы сохранить протокол ошибок в файл: )
  if /i "!key!"=="Y" (move /y "%log1251%" "%~dp1"& del /q "%log866%") else (del /q "%log866%"& del /q "%log1251%")  
) else (del /q "%log866%")
Exit /B
 
:Recode
::Файл с кодировкой WIN-866
set FileIn=%log866%
::Результат, куда записывать OEM-1251
set FileOut=%log1251%
 ::chcp 1251> nul
for /f "delims=" %%a in (%FileIn%) do (
  if not defined cpReady (
    chcp 1251> nul
    set CpReady=True
  )
  call :convert "%%a"
)
chcp 866> nul
exit /B
 
:convert
echo %~1>>"%FileOut%"
Exit /B

P.S. Скрипт для msbuild — упрощённый (лог-файл не ведётся).

Кликните здесь для просмотра всего текста

Windows Batch file
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
@echo off& :: by Alex Dragokas -02.03.2017-
::Помощник компиляции исходников C#
Setlocal EnableDelayedExpansion EnableExtensions
 
::Задайте здесь полный путь к компилятору, либо будет предложен выбор
::set FWExec=%SystemRoot%\Microsoft.NET\Framework\v3.5\msbuild.exe
 
Echo Помощник компиляции проектов .NET (.sln)
Echo.
if "%1"=="" (
  Echo Перетяните исходный файл .cs на этот скрипт ^(Drag ^& Drop^),
  Echo или задайте его как аргумент, например "%~nx0" "c:\temp\source.sln"
  Echo.& pause& Goto :eof
)
 
::Если путь указан в шапке
if Defined FWExec goto :begin
 
Echo Выберите версию FrameWork, с помощью которой по-умолчанию будет компилироваться исходник
Echo.
for /f "delims=" %%A in ('dir /b /s /a:-d "%windir%\Microsoft.NET\msbuild.exe"') do (
  Set /A n+=1
  Set FW!n!=%%A
  for /f "tokens=4,5 delims=" %%r in ("%%A") do (
    echo %%r|find "64">nul
    if !errorlevel!==0 (set arch=x64) else (set arch=x32)
    echo !n!. !arch! %%s
  )
)
if not Defined n (Echo На компьютере не обнаружен установленный FrameWork& Echo.& pause& goto :eof)
Echo.
:FWenter
Set /p FWver="Ожидаю ввода: "
if "%FWver%"=="" Goto :FWenter
if %FWver% LSS 0 Goto :FWenter
if %FWver% GTR %n% Goto :FWenter
set FWExec=!FW%FWver%!
 
SetLocal DisableDelayedExpansion
 
:begin
"%FWExec%" "%~1" /t:rebuild /p:Configuration=Debug /p:Platform="any cpu" /clp:Nosummary
if %errorlevel% neq 0 (
  echo.
  Echo ^>^>^> Во время компиляции возникла ошибка ^<^<^<
  pause>NUL
)

Вложения

Compiler.zip (2.3 Кб, 292 просмотров)
msbuild_me2.zip (1.1 Кб, 114 просмотров)



5



18023 / 7726 / 892

Регистрация: 25.12.2011

Сообщений: 11,502

Записей в блоге: 16

06.01.2013, 02:03

 [ТС]

Отслеживание зависшего процесса и его перезапуск с указанным приоритетом
Автор: Dragokas

Все параметры настраиваемы (см. начало кода и спойлер). Комментарии писал на английском, уж как есть.

Принцип работы:
Задаем имя процесса(ов), который будем отслеживать.
В системе могут быть несколько процессов с одинаковым именем. Скрипт идентифицирует их по PID и не путается.
Если найден процесс с указанным именем и статусом «Not responding»,
начинается валидация (повторная проверка этого статуса на протяжении заданного времени и указанное кол-во раз).

(а вдруг процесс подвис на секунду — не «убивать» же его из-за этого!!!)

Если все проверки позитивны, ищем полный путь к процессу по номеру его Process ID (используется инструментарий WMIC).
Принудительно завершаем процесс по PID.
Выжидаем указанную задержку перед повторным запуском.
Запускаем тот же процесс с указанным приоритетом в минимизированном виде.

Настройки:

Можно задавать такие паузы (в мс.):
1) между проверками статуса «Не отвечает».
2) продолжительность времени и кол-во дополнительных проверок валидации статуса за это время.
3) перед новым запуском завершенного приложения.

Запуск в минимизированном виде:
1 — Да, 0 — Нет.

Приоритеты запускаемого процесса:
1 — низкий
2 — ниже среднего
3 — средний
4 — выше среднего
5 — высокий
6 — в реальном времени

Имена нескольких процессов задаются через запятую без кавычек, даже если в их имени есть пробел.

Upd.3.
Подправлено получение пути к процессу из правильного свойства WMIC Process (ExecutablePath вместо CommandLine).
Добавлена принудительная минимизация окна с помощью утилиты NirCMD (некоторые программы восстанавливают окно при использовании Start /MIN).
В силу особенностей NirCMD процесс нужно вручную задавать на выбор: по имени класса или по имени (части имени) окна.
Добавлен автоперезапуск процесса, если через 10 сек. после его запуска оно не набрало указанное число КБайт в оперативной памяти.

Скрипт обсуждается здесь Отслеживание зависания (состояния «не отвечает») программы и её перезапуск



7



Eva Rosalene

Модератор

5240 / 2114 / 416

Регистрация: 06.01.2013

Сообщений: 4,845

08.01.2013, 21:45

Помощь по всем командам вашей версии Windows / DOS

Развврнуть код…

Bash
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
@echo off
setlocal enabledelayedexpansion
if exist "help.txt" (del help.txt)
help>>help.txt
del help2.txt
FOR /F "usebackq" %%a IN ("help.txt") DO (
 set string=%%~a
 if "!string:~0,1!"=="A" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="B" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="C" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="D" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="E" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="F" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="G" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="H" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="I" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="J" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="K" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="L" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="M" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="N" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="O" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="P" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="Q" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="R" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="S" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="T" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="U" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="V" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="W" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="X" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="Y" (echo !string!>>help2.txt)
 if "!string:~0,1!"=="Z" (echo !string!>>help2.txt)
)
del help.txt
FOR /F "usebackq tokens=1,2*" %%a IN ("help2.txt") DO (
 echo ====================>>help.txt
 echo HELP FOR %%a>>help.txt
 echo %%a
 %%a /?>>help.txt
)
echo OK
pause>nul
timeout /t 1 /NOBREAK>nul

После запуска появятся два текстовых файла.
По ходу действия программа будет писать вам, какая команда сейчас обрабатывается.
HELP2 — список доступных вам команд.
HELP — собственно справка по каждой из них.



5



Dragokas

18023 / 7726 / 892

Регистрация: 25.12.2011

Сообщений: 11,502

Записей в блоге: 16

15.01.2013, 02:20

 [ТС]

Прогресс-бар копирования файлов
Автор: Ris

Взято из этой темы.

Версия 1.5

Bash
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
@echo off
::Первый пааметр - это откуда копировать(путь у папке)
::Второй параметр - это куда копировать(путь у папке)
::Третий параметр - это надо ли копировать вложенный папки (+s - если надо, -s если не надо)
::Четвертый параметр - это что копировать(расширение файлов без точки, не указывайте - если все файлы)
if "%~1"=="" goto :EOF
set otkyda=%~1
if "%~2"=="" goto :EOF
set kyda=%~2
if /i "%~3"=="+s" (set s=^/s) else (set s=)
if "%~4"=="" (set pac=^*) else (set pac=%~4)
setlocal enabledelayedexpansion
set /a q=0
echo Copy...0%%
echo °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
cd /d "%~1"
for /f "tokens=*" %%i in ('dir /a:-d /b /-c %s% "*.%pac%"') do (set /a sall+=%%~zi)
for /f "tokens=*" %%i in ('dir /a:-d /b /-c %s% "*.%pac%"') do (call :mycopy "%%i" %%~zi)
cls
echo Copy...100%%
echo ЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫ
goto :EOF
exit
:mycopy
if not %2 LSS 200000000 (echo File size is larger than 200MB.&pause&exit)
set p=%~dp1
call set x=%%p:%otkyda%=%%
xcopy /q /s /y %1 "%kyda%%x%" > nul
set /a proc=10*%2/(%sall%/1000)
if %2 LSS 10000 set /a proc=%2*10000/%sall%
set /a q=%q%+%proc%
cls
echo Copy...%q:~0,-2%.%q:~-2%%%
set /a qb=(%q%*80)/10000
if "%qb%"=="%qb_pr%" (echo %bar%%barx%&exit /b)
set /a qbx=80-%qb%
set bar=
set barx=
for /l %%i in (1,1,%qb%) do (set bar=!bar!Ы)
for /l %%i in (1,1,%qbx%) do (set barx=!barx!°)
echo %bar%%barx%
set qb_pr=%qb%
exit /b

Юзаем, например, так:

Bash
1
copybar "C:\temp" "%cd%\temp" +s rar



2



inter-admin

Эксперт

29715 / 6470 / 2152

Регистрация: 06.03.2009

Сообщений: 28,500

Блог

15.01.2013, 02:20

Помогаю со студенческими работами здесь

Bat/cmd
Добро утро. Директор придумал просто одну вещь. Изложу ситуацию.
У меня есть папка obchee_s_ras называется. В ней находятся файлы: …

рисунок в BAT\CMD
Если кому будет не сложно можете нарисовать знак сбербанка и слово рядом) Буду очень благадарен

Меню в BAT/CMD
Вопрос от полного ламера.
У меня такая проблемма надо сделать меню в CMD чтобы при нажатии 1 Выполнялся один сценарий при нажатии 2…

Задание CMD/BAT
1. Изменить вид приглашения, поместив туда время без секунд и миллисекунд.
2. Создать в текущем каталоге текстовый файл с…

На каком языке программирования пишутся скрипты для bat и vbc?
День добрый. Подскажите на каком языке пишутся скрипты для bat и vbc. Я знаю что под линукс идет шел а под виндус какой ?
Спасибо!

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

20

Время на прочтение4 мин

Количество просмотров26K

В этой статье рассмотрим почему мы все любим Powershell на паре рабочих примеров. Все это будет полезно при инвентаризации, поиске конкретного компьютера и прочих делах. Powershell оборудован удобными и запоминающимися командлетами, автодополнение всего и интуитивные названия делают его наверное самым простым в освоении языком.

В этом руководстве рассмотрим несколько крутых по мнению автора команд и расскажем почему это круто. Начнем со снипетов.

Полезные снипеты:

Заносим компьютер в TrustedHosts

Пригодится при подключении к серверу по WinRm. Команда перезапишет предыдущее значение, будьте осторожны, добавляйте ip или имена хостов через запятую. Если все ваши хосты находятся в AD, трогать этот файл не нужно.

Set-Item WSMan:\localhost\Client\TrustedHosts -Value '192.168.0.1'

Wildcard тоже работает, если не хотите каждый раз добавлять новый хост в TrustedHosts.

Set-Item WSMan:\localhost\Client\TrustedHosts -Value '*'

Храним пароль в зашифрованном виде в файле:

Пригодится для автоматизации, сильно облегчает жизнь при выполнении скриптов из планировщика, но при этом пароль хранится в безопасном виде. 

Если выполнять скрипты из под зашедшего пользователя, будут использоваться креды этого пользователя.

Read-Host -AsSecureString | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString | Out-File -FilePath .\Password.txt

Забираем зашифрованный пароль из файла:

$Password = Get-Content C:\Password.txt | ConvertTo-SecureString

Тоже самое можно проделать и с Credentials, заменим Read-Host на Get-Credential.

Get-Credential | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString | Out-File -FilePath .\Credential.txt

Получаем дату последней загрузки ОС.

(gcim win32_operatingsystem).LastBootUpTime

Тем же самым способом получаем еще и аптайм.

Get-CimInstance Win32_operatingsystem -ComputerName $computers |
Select-Object LastBootUpTime,
@{Name="Uptime";Expression = {(Get-Date) - $_.LastBootUptime}} 

Получаем список установленных программ:

Именно программ, а не компонентов:


Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* |  Select-Object DisplayName, DisplayVersion, Publisher, InstallDate |
Format-Table –AutoSize

Получаем список дисков, в том числе сетевых и свободное место на них

Get-PSDrive -PSProvider filesystem | where-object {$_.used -gt 0} |
Select-Object -property Root,@{name="Size";expression={($_.used+$_.free)/1GB -as [int]}},
@{name="Used";expression={($_.used/1GB) -as [int]}},
@{name="Free";expression={($_.free/1GB) -as [int]}} 

Останавливаем процесс по его имени.

В этом примере останавливаем Chrome. Wildcard тоже подойдет, если хотите завершить всё.

Get-Process -Name "chrome" | Stop-Process

Копируем настройки доступа к папкам на дочерние папки

Пригодится, если вам захочется отобрать или дать права на пользование к папке и всем подпапкам у группы пользователей или у пользователя. Команда рекурсивно, снизу вверх копирует права на чтение и запись.

Копируем ACL у папки:

$Acl = Get-Acl -Path C:\folder\

Вставляем ACL на все файлы и подпапки:

Get-ChildItem -Path C:\Folder\ -Recurse | Set-Acl $Acl 

Полезные скрипты:

Вот тут начинается самое страшное веселье. Если вам нужно провести инвентаризацию, будет очень полезно глянуть. Если ваши компьютеры не в AD, то скрипт станет немного сложнее, итерировать придется по заранее составленному файлу, а пароли нужно будет брать из файла или через Get-Credential. Вся разница:

C AD:

$ADComputers = (Get-ADComputer -filter *).DNSHostName

Без AD:

$Credentials = Get-Credential
$Computers = Get-Content -Path C:\servers.txt

Получаем аптайм дату последней загрузки каждого из компьютеров в AD:


$ADComputers = (Get-ADComputer -filter *).DNSHostName

foreach ($i in $ADComputers) {
 
    Invoke-Command $i {
        Get-CimInstance Win32_operatingsystem |
        Select-Object LastBootUpTime,
        @{Name="Uptime";Expression = {(Get-Date) - $_.LastBootUptime}} 
    } 
 
}

Получаем все установленные программы на всех компьютерах AD:

$ADComputers = (Get-ADComputer -filter *).DNSHostName
foreach ($i in $ADComputers) {
 
    Invoke-Command -computername $i {
        gcim win32_product -computername $env:computername | Sort-Object -property Vendor,Name | Select-Object -property Vendor,Name, Caption 
    } 
 
}

Тоже самое можно будет получить и для компонентов, подставив в Invoke-Command:

Get-WindowsFeature | Where-Object -Property "Installed" -EQ "Installed"

Получаем компьютеры, где запущен нужный нам процесс:

Если вы забыли на каком компьютере запущена та или иная программа, можно получить её таким способом. Рассмотрим на примере браузера:

$ADComputers = (Get-ADComputer -filter *).DNSHostName
foreach ($i in $ADComputers) {
 
    Invoke-Command -computername $i {
        Get-Process -Name "Chrome"  -ErrorAction SilentlyContinue
    } 
 
}

Убить браузер можно будет так же легко, как и получить процесс:

$ADComputers = (Get-ADComputer -filter *).DNSHostName
foreach ($i in $ADComputers) {
 
    Invoke-Command -computername $i {
        Get-Process -Name "Chrome" | Stop-Process -ErrorAction SilentlyContinue
    } 
 
}

Получаем компьютеры, где установлена конкретная программа:

Кокретно в этом случае Java. Поможет при проведении инвентаризации можно будет посмотреть имена компьютеров где она была установлена.

$ADComputers = (Get-ADComputer -filter *).DNSHostName
foreach ($i in $ADComputers) {
 
    Invoke-Command -computername $i {
        gcim win32_product -computername $env:computername | Select-String -Pattern "Java" -AllMatches | Sort-Object -property Vendor,Name | Format-Table -ErrorAction SilentlyContinue
 
    } 
 
}

Если у вас возникнут предложения, будем рады добавить их в эту статью. Надеемся, эти примеры были для вас полезны.

Предлагаем обновлённый тариф UltraLite Windows VDS за 99 рублей с установленной Windows Server 2019 Core.

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Hkey local machine software microsoft windows photo viewer capabilities fileassociations
  • Какие горячие клавиши есть в windows
  • Программа для сжатия диска windows 10
  • Asus k53sv драйвера для windows 10
  • Настройка файла подкачки в windows 10 для игр