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

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

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

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225

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

KLASS



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

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

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

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

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

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



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

Цитата:
Простой проверкой имени этого не избежать.

Это да, неподходящие файлы могут просочиться через такой фильтр, try-catch гораздо лучше...  
Но, хотя бы, не будут пересоздаваться уже существующие декодированные файлы...
Нет, понятно, что проверки можно наворотить и скрипт довести до совершенства... только остается вопрос: а надо ли это вопрошающему?
 
Добавлено:
iNNOKENTIY21

Цитата:
Шрифт приглянулся, для консоли, редакторов с лигатурами: sublime, visual code…

Для консоли - возможно, но для форума, лучше так:


Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 23:44 27-09-2019
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2
Ну, это… раскраска, а чем раскрашивает?
 
Добавлено:
Раскраска — Ru-board highlight.pack - [6] :: Тестирование :: Компьютерный форум Ru.Board
Нужен скрипт-контейнер

Цитата:
Firefox: Greasemonkey, Tampermonkey или Violentmonkey

не хочется их ставить, но хочется подсветки кода. Эхъ…

Всего записей: 3519 | Зарегистр. 16-08-2012 | Отправлено: 23:52 27-09-2019
VVL99

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex1985
Разобрались? Я вам подправил ваш код, до рабочего состояния и хотел ещё вариант подкинуть, где ломается переменная, попробуйте добавлять символы к %%b
) do echo %%a - %%b
) do echo %%a - %%b.
) do echo %%a - %%b..
Уведите смещение и поймёте почему переменная ломается.
 
iNNOKENTIY21 (пост)
Цитата:
   не хочется их ставить, но хочется подсветки кода. Эхъ…
Его кстати можно и букмарклетом использовать, но только надо шапку срезать и добавить в начало javascript: код
А у меня в 42-ом он установлен напрямую как юзерскрипт.

Всего записей: 4158 | Зарегистр. 03-02-2011 | Отправлено: 01:55 28-09-2019
farag



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Хотел запустить PS из-под cmd, но все ломается...
https://stackoverflow.com/questions/9366080/batch-launching-powershell-with-a-multiline-command-parameter

Код:
 
set ThreatID= ^
# KMS ^
Add-MpPreference -ThreatIDDefaultAction_Ids 225062 -ThreatIDDefaultAction_Actions Allow -Force ^
Add-MpPreference -ThreatIDDefaultAction_Ids 2147685180 -ThreatIDDefaultAction_Actions Allow -Force ^
Add-MpPreference -ThreatIDDefaultAction_Ids 2147734094 -ThreatIDDefaultAction_Actions Allow -Force ^
# Adobe patch ^
Add-MpPreference -ThreatIDDefaultAction_Ids 2147593794 -ThreatIDDefaultAction_Actions Allow -Force ^
# Finereader ^
Add-MpPreference -ThreatIDDefaultAction_Ids 2147733459 -ThreatIDDefaultAction_Actions Allow -Force
start powershell -noexit -command %ThreatID%
 


Всего записей: 2476 | Зарегистр. 27-07-2009 | Отправлено: 12:30 28-09-2019
YuS_2



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

Цитата:
Хотел запустить PS из-под cmd, но все ломается...  

в таком варианте, надо не забывать, что между командлетами обязателен разделитель ";"

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 13:08 28-09-2019
Smitis



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


----------
Разум когда-нибудь победит

Всего записей: 3214 | Зарегистр. 09-02-2003 | Отправлено: 13:40 28-09-2019
YuS_2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
farag
Да, в таком виде комменты надо убирать, это точно, либо можно оставить, но выделить их двойными тегами:

Код:
<#комментарий#>

только их придется экранировать, т.к. это cmd...

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 14:22 28-09-2019 | Исправлено: YuS_2, 14:24 28-09-2019
farag



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

Код:
 
set ThreatID= ^
Write-Host "KMS"; ^
Add-MpPreference -ThreatIDDefaultAction_Ids 225062 -ThreatIDDefaultAction_Actions Allow -Force; ^
Add-MpPreference -ThreatIDDefaultAction_Ids 2147685180 -ThreatIDDefaultAction_Actions Allow -Force; ^
Add-MpPreference -ThreatIDDefaultAction_Ids 2147734094 -ThreatIDDefaultAction_Actions Allow -Force; ^
Write-Host "Adobe patch"; ^
Add-MpPreference -ThreatIDDefaultAction_Ids 2147593794 -ThreatIDDefaultAction_Actions Allow -Force; ^
Write-Host "Finereader"; ^
Add-MpPreference -ThreatIDDefaultAction_Ids 2147733459 -ThreatIDDefaultAction_Actions Allow -Force;
start powershell -noexit -command %ThreatID%
 

Так все отлично работает.

Всего записей: 2476 | Зарегистр. 27-07-2009 | Отправлено: 21:42 28-09-2019
iNNOKENTIY21



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

Код:
function add-int([int] $n) {$i += $n}
 [int[]] $i = @()
 Add-Int 99
 Add-Int 88
 Add-Int 77
 $i += 66
 $i

WTF

Всего записей: 3519 | Зарегистр. 16-08-2012 | Отправлено: 11:54 02-10-2019
westlife



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
Если я правильно понял, то это разные области действия.

Код:
[int[]] $Global:i = @()
function add-int([int] $n) {$Global:i += $n ; $Global:i}
Add-Int 99
Add-Int 88
Add-Int 77
$Global:i += 66
$Global:i

Всего записей: 1390 | Зарегистр. 12-12-2006 | Отправлено: 15:48 02-10-2019
Sanatory



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветствую!
Нужен скрипт (батник или .vbs), который создавал бы текстовый файл в кодировке OEM-866 (CP866).
Пробовал этот код, но почему-то не фурычит (файлик создаётся, но в utf-8)

Код:
Set WshShell = CreateObject("WScript.Shell")  
filename = InputBox("Введите имя нового файла без расширения", "Создание нового файла *.cmd", "!")  
If filename <> "" Then  
  filename = filename & ".cmd"  
Set stream = CreateObject("ADODB.Stream")
stream.Open
Stream.Charset = "CP866"
stream.Type     = 2 'text
stream.Position = 0
stream.Charset  = "cp866"
stream.WriteText "in OEM-866 =)"
stream.SaveToFile filename, 2
stream.Close
End If

 
У меня windows 7, если что.

Всего записей: 89 | Зарегистр. 21-04-2010 | Отправлено: 20:06 02-10-2019 | Исправлено: Sanatory, 20:07 02-10-2019
PhoenixUA



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
westlife
Лучше $script: вместо $global:
Там ещё один прикол есть, что функция не может изменить переменную из наружной области действия (хотя казалось бы), если не прописать везде у переменной script или global. Т. к. на самом деле значение наружной переменной просто копируется в одноимённую внутреннюю.

Всего записей: 2184 | Зарегистр. 17-11-2005 | Отправлено: 20:38 02-10-2019
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
westlife, PhoenixUA
Правильно поняли. Оно
 
Добавлено:

Код:
function add-int([int] $n) { $script:i += $n }
[int[]] $script:i = @()
Add-Int 99
Add-Int 88
Add-Int 77
$i += 66
$i

Всего записей: 3519 | Зарегистр. 16-08-2012 | Отправлено: 21:49 02-10-2019 | Исправлено: iNNOKENTIY21, 22:00 02-10-2019
Belkavladimir

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

Всего записей: 3 | Зарегистр. 01-10-2019 | Отправлено: 22:26 02-10-2019
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Предпочтительнее?
Код:
function add-int([ref] $i, [int] $n) { $i.Value += $n }
[int[]] $i = @()
add-int ([ref] $i) 99
add-int ([ref] $i) 88
add-int ([ref] $i) 77
$i += 66
$i


Всего записей: 3519 | Зарегистр. 16-08-2012 | Отправлено: 22:30 02-10-2019
YuS_2



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

Цитата:
Нужен скрипт (батник или .vbs), который создавал бы текстовый файл в кодировке OEM-866

а сложность в чем? OEM кодировка - родная для консоли cmd
То бишь, сам пакетник сохраняем в OEM кодировке и вперед:

Код:
@echo off
echo Создаем файл в кодировке OEM (cp866) >out.txt

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 06:01 03-10-2019
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sanatory
А у меня ваш код отрабатывает.
Поменял только, для наглядности: stream.WriteText "Файл в кодировке OEM-866 =)"
Один: Stream.Charset = "CP866" — не лишний?

Всего записей: 3519 | Зарегистр. 16-08-2012 | Отправлено: 07:05 03-10-2019
Sanatory



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

Цитата:
А у меня ваш код отрабатывает.  

А у меня нет. Не знаю, в чём может быть причина...
 
YuS_2

Цитата:
а сложность в чем? OEM кодировка - родная для консоли cmd
То бишь, сам пакетник сохраняем в OEM кодировке и вперед:
 
Код:
@echo off
echo Создаем файл в кодировке OEM (cp866) >out.txt
 

Вы абсолютно правы!
Спасибо, всё работает.
 
Как я погляжу, все знатоки здесь собрались, поэтому продублирую свой вопрос тут, а то в теме Программирование "удобняшек" на VBScrip молчат...
Итак, безрезультатно терзаю гугл запросами.
Ребята, объясните слоупоку.
 
Ситуация следующая.  
Я давно уже пользуюсь скриптом для выкачивания видосов с помощью youtube-dl:
 

Код:
Set WshShell = CreateObject("WScript.Shell")  
link = InputBox("Enter link for downloading", "link for downloading", "https://www.youtube.com/watch?v=")
If link <> "" Then  
 
  Set WshShell = WScript.CreateObject("WScript.Shell")
 
  strAttr1 = " -o ""n:/! Internet-TEMP/%(title)s.%(ext)s"""
  strAttr2 = " --cache-dir ""n:\! Internet-TEMP\!!!!!!!!!!SaveTube"""
  strAttr3 = " --user-agent ""Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.2704.106 Safari/537.36"""
  strAttr4 = " --hls-prefer-native"
  strAttr5 = " --no-mtime"
  strAttr6 = " --no-check-certificate"
  strAttr7 = " --ignore-config"
  strAttr8 = " --geo-bypass"
  strAttr9 = " --format ""bestvideo[height<1080]+worstaudio"""
  strAttr10 = " --ffmpeg-location ""PATH\TO\ffmpeg.exe"""
   
  youtube_dl = WshShell.ExpandEnvironmentStrings("PATH\TO\youtube-dl.exe")
  WshShell.Run """" & youtube_dl & """ " & link & strAttr1 & strAttr2 & strAttr3 & strAttr4 & strAttr5 & strAttr6 & strAttr7 & strAttr8 & strAttr9 & strAttr10, 1, True
End If

 
Решил усовершенствовать его, чтобы для выкачивания роликов с youtube и всех остальных сайтов были разные настройки.
пробовал и так:

Код:
Set WshShell = CreateObject("WScript.Shell")  
link = InputBox("Enter link for downloading", "link for downloading", "https://www.youtube.com/watch?v=")
If link <> "" Then  
 
  Set WshShell = WScript.CreateObject("WScript.Shell")
 
  strAttr1 = " -o ""n:/! Internet-TEMP/%(title)s.%(ext)s"""
  strAttr2 = " --cache-dir ""n:\! Internet-TEMP\!!!!!!!!!!SaveTube"""
  strAttr3 = " --user-agent ""Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.2704.106 Safari/537.36"""
  strAttr4 = " --hls-prefer-native"
  strAttr5 = " --no-mtime"
  strAttr6 = " --no-check-certificate"
  strAttr7 = " --ignore-config"
  strAttr8 = " --geo-bypass"
  strAttr9 = " --format ""bestvideo[height<1080]+worstaudio"""
  strAttr10 = " --ffmpeg-location ""PATH\TO\ffmpeg.exe"""
   
   
function TubeFunction()
  Set re=New RegExp
  With re
    .Pattern = "^.*(??:youtu\.be\/|v\/|vi\/|u\/\w\/|embed\/)|(??:watch)?\?v(?:i)?=|\&v(?:i)?=))([^#\&\?]*).*"
    .IgnoreCase = true
  End With
   
  If re.Test( link ) Then
    TubeFunction = True
  Else
    TubeFunction = false
  End If
  Set re = Nothing
end function
 
  youtube_dl = WshShell.ExpandEnvironmentStrings("PATH\TO\youtube-dl.exe")
   
  If TubeFunction Then
    WshShell.Run """" & youtube_dl & """ " & link & strAttr1 & strAttr2 & strAttr3 & strAttr4 & strAttr5 & strAttr6 & strAttr7 & strAttr8 & strAttr9 & strAttr10, 1, True
  Else
    WshShell.Run """" & youtube_dl & """ " & link & strAttr1 & strAttr2 & strAttr3 & strAttr4 & strAttr5 & strAttr6 & strAttr7, 1, True
  End If
   
   
End If

 
и эдак:

Код:
Set WshShell = CreateObject("WScript.Shell")  
link = InputBox("Enter link for downloading", "link for downloading", "https://www.youtube.com/watch?v=")
If link <> "" Then  
 
  Set WshShell = WScript.CreateObject("WScript.Shell")
 
  strAttr1 = " -o ""n:/! Internet-TEMP/%(title)s.%(ext)s"""
  strAttr2 = " --cache-dir ""n:\! Internet-TEMP\!!!!!!!!!!SaveTube"""
  strAttr3 = " --user-agent ""Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.2704.106 Safari/537.36"""
  strAttr4 = " --hls-prefer-native"
  strAttr5 = " --no-mtime"
  strAttr6 = " --no-check-certificate"
  strAttr7 = " --ignore-config"
  strAttr8 = " --geo-bypass"
  strAttr9 = " --format ""bestvideo[height<1080]+worstaudio"""
  strAttr10 = " --ffmpeg-location ""PATH\TO\ffmpeg.exe"""
   
   
  youtube_dl = WshShell.ExpandEnvironmentStrings("PATH\TO\youtube-dl.exe")
   
  WshShell.Run """" & youtube_dl & """ " & link & TubeFunction, 1, True
 
function TubeFunction()
  Set re=New RegExp
  With re
    .Pattern = "^.*(??:youtu\.be\/|v\/|vi\/|u\/\w\/|embed\/)|(??:watch)?\?v(?:i)?=|\&v(?:i)?=))([^#\&\?]*).*"
    .IgnoreCase = true
  End With
   
  If re.Test( link ) Then
    TubeFunction = strAttr1 & strAttr2 & strAttr3 & strAttr4 & strAttr5 & strAttr6 & strAttr7 & strAttr8 & strAttr9 & strAttr10
  Else
    TubeFunction = strAttr1 & strAttr2 & strAttr3 & strAttr4 & strAttr5 & strAttr6 & strAttr7
  End If
  Set re = Nothing
end function
   
End If

 
Но чёт "не выходит каменный цветок": всякий раз получаю ошибку вида "Не удается найти указанный файл" с указанием источника проблемы, где идёт исполнение  

Код:
WshShell.Run """" & youtube_dl & """ " & link & ...

 
Суть просьбы проста: мне надо, чтобы в зависимости от того, опознаётся ли вводимая ссылка как youtubeОвская, youtube-dl запускался с разными параметрами.
 
Буду неимоверно благодарен за помощь. Выручайте, друзья!

Всего записей: 89 | Зарегистр. 21-04-2010 | Отправлено: 01:18 04-10-2019
iNNOKENTIY21



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

Цитата:
пробовал и так:

И этот код у меня работает.
Ругается на паттерн, заменил на простой (.Pattern = "https:\/\/www\.youtube\.com.+") для проверки — работает.
 
 
Добавлено:
Enterprise Client System NT-6.3, Windows 10 Enterprise x-64, 1809 rs5 release, v10.0.17763.775 (C:\WINDOWS)

Всего записей: 3519 | Зарегистр. 16-08-2012 | Отправлено: 06:14 04-10-2019
Sanatory



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

Цитата:
И этот код у меня работает.
Ругается на паттерн

Спасибо что проверили.
Я-то грешил на ошибки в коде. Оказалось, всё дело в кодировке скрипта... Если 1251 - отрабатывает всё, если cp866 или там utf-8, не может найти путь к файлу youtube-dl.exe.
В общем, заработало то, что и так должно было работать

Всего записей: 89 | Зарегистр. 21-04-2010 | Отправлено: 21:10 04-10-2019
Открыть новую тему     Написать ответ в эту тему

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

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


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru