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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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.
• Сторонние консольные утилиты можно использовать только в виде готового решения и только в рамках сценариев. Никаких обсуждений и обучений работе с утилитами не предусмотрено и прямо запрещено правилами топика.
Шапка и около-темные вопросы |

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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Death_INN, YuS_2 благодарю за ответ. Ещё возник такой вопрос. Каким образом можно отключить всплывающее окно «Контроль учётных записей» только для данного батника?

Всего записей: 30 | Зарегистр. 20-12-2017 | Отправлено: 07:50 23-01-2020 | Исправлено: icijafi, 07:51 23-01-2020
iNNOKENTIY21



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

Цитата:
Здравствуйте. Скажите, пожалуйста, как сделать один bat-файл, который при запуске будет:  
 
1) включать адаптер, если он выключен
2) выключать адаптер, если он включен
 
Команды выглядят таким образом:
 
netsh interface set interface name="Ethernet" enable - включить адаптер
netsh interface set interface name="Ethernet" disable - выключить адаптер

У меня, такое на netsh получилось, зависит от языка
 
EthernetToggle.cmd
Код:
set adapterName="Ethernet"
set statusString="Подключен"

for /f "delims=" %%a in ('
   netsh int show int ^| find %adapterName% ^| find /c %statusString%
') do set status=%%a

if %status%==0 (netsh interface set interface name=%adapterName% enable)
if %status%==1 (netsh interface set interface name=%adapterName% disable)


Всего записей: 3504 | Зарегистр. 16-08-2012 | Отправлено: 11:29 23-01-2020
mig73



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
icijafi
Не совсем то, интерфейс надо выбрать из доступных цифрой для ВКЛ/ВЫКЛ.
Подробнее...

Всего записей: 8283 | Зарегистр. 24-02-2010 | Отправлено: 12:43 23-01-2020 | Исправлено: mig73, 13:28 23-01-2020
icijafi

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

Код:
@echo off
set deviceid=9
for /f "delims=" %%a in ('
    wmic path win32_networkadapter where deviceid^=%deviceid% get netenabled /value^|find /i "netenabled"
') do set %%a
if "%NetEnabled%"=="FALSE" (wmic path win32_networkadapter where deviceid=%deviceid% call enable) else (
    wmic path win32_networkadapter where deviceid=%deviceid% call disable
)
pause&exit

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

Всего записей: 30 | Зарегистр. 20-12-2017 | Отправлено: 12:58 23-01-2020 | Исправлено: icijafi, 12:59 23-01-2020
farag



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
icijafi
https://gist.github.com/Maximus5/a7fb0a11b3c33e5d96b0
 

Код:
 
@echo off@echo off
 
"%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" >nul 2>&1
 
:: If error flag set, we do not have admin
if '%errorlevel%' NEQ '0' (
goto UACPrompt
) else (goto gotAdmin )
 
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B
 
:gotAdmin
if exist "%temp%\getadmin.vbs" (del "%temp%\getadmin.vbs")
pushd "%CD%"
CD /D "%~dp0"
 
set deviceid=9
for /f "delims=" %%a in (
    'wmic path win32_networkadapter where deviceid^=%deviceid% get netenabled /value^ | find /i "netenabled"'
) do set %%a
if "%NetEnabled%"=="FALSE" (wmic path win32_networkadapter where deviceid=%deviceid% call enable) else (
    wmic path win32_networkadapter where deviceid=%deviceid% call disable
)
pause&exit
 

Всего записей: 2474 | Зарегистр. 27-07-2009 | Отправлено: 13:32 23-01-2020 | Исправлено: farag, 13:40 23-01-2020
icijafi

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
farag, mig73, iNNOKENTIY21, YuS_2 благодарю за помощь. Вы мне очень помогли.

Всего записей: 30 | Зарегистр. 20-12-2017 | Отправлено: 13:47 23-01-2020 | Исправлено: icijafi, 13:49 23-01-2020
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Снипет для тех, у кого несколько повершелов и несколько IDE -  
   и бывает непонятно, в каком окружении по факту запустился скрипт.
 
Полезен при отладке
 

Код:

"{0}, version {1}" -f $Host.Name, $Host.Version.ToString() | Write-Host -ForegroundColor Blue
"PSVersion: {0}" -f $PSVersionTable['PSVersion'].ToString() | Write-Host -ForegroundColor Blue
 

Visual Studio Code Host, version 2020.1.0
PSVersion: 6.2.3



Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 13:50 23-01-2020 | Исправлено: LevT, 15:13 23-01-2020
newhk



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ, привет!
У меня вопрос.
Есть задача резервного копирования.
Предположим, что оно автоматическое, но есть необходимость его сделать вручную, путем запуска скрипта, который это резервное копирование выполняет.
У меня есть цикл, который смотрит, если файл с указанным имененм и переименовывает его, но это однократно, а как сделать, чтобы какждый раз при наличии имени файла оно заменялось?
 
Код для разового переименования
 

Код:
 
foreach ($f_1c in $files){
    if ((Test-Path $f_1c) -like 'true'){
        $f = $f_1c.Replace('.dt','_.dt')
        Rename-Item $f_1c -NewName $f
        }
}
 

 
Моя попытка сделать его многоразовым...

Код:
 
Foreach ($f_1c in $files){
    if ((Test-Path $f_1c) -like 'true'){
        $pf = '.dt'
        $f = $f_1c.Replace($pf,{'_' + $pf})
        Rename-Item $f_1c -NewName $f  
        if ((Test-Path $f) -like 'true'){
            $f = $f.Replace($pf,{'_' + $pf})
            Rename-Item $f -NewName {$f  + '_'}
            }  
        }
}
 

Всего записей: 400 | Зарегистр. 02-02-2009 | Отправлено: 14:11 24-01-2020 | Исправлено: newhk, 14:36 24-01-2020
farag



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
newhk
Тяжело читается из-за сокращений переменных даже после причесывания.

Всего записей: 2474 | Зарегистр. 27-07-2009 | Отправлено: 14:40 24-01-2020
newhk



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Мне уже подсказали идею.
Спасибо.

Код:
 
Get-item $files | ForEach-Object {
    Copy-Item $_.FullName -Destination "$($_.Directory.FullName)\$($_.BaseName)_$(New-Guid)$($_.Extension)"
    }
 

Всего записей: 400 | Зарегистр. 02-02-2009 | Отправлено: 15:09 24-01-2020 | Исправлено: newhk, 15:11 24-01-2020
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
farag
 
Только что на практике обнаружил разницу между виндовым повершел и Core при таком запуске неопределённого заранее скрипта
 

Код:

# в виндовом будет синтаксическая ошибка
# в Core возвращает "promise" - в терминах повершел, [PSRemotingJob]
 
$expected =  1..2 | foreach-object & $script  

 
 
Добавлено:
Если скрипт заранее определить, то в Core будет вот что:
 

Код:

[DBG]: PS M:\_scripts\AuditManager> $expected        
 
Id     Name            PSJobTypeName   State         HasMoreData     Location             Command
--     ----            -------------   -----         -----------     --------             -------
3      Job3            BackgroundJob   Blocked       True            localhost            Microsoft.PowerShell.Man…

 
Как этим воспользоваться, пока не понимаю..
 
 
 
 

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 15:18 24-01-2020 | Исправлено: LevT, 15:50 24-01-2020
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Расшифруйте пожалуйста, что происходит в строчке скриптблока:
Скриптблок типа анонимной функции, принимающей два параметра типа Object и возвращающий Object? А дальше…?
 
весь код по ссылке:
Код:
[Func[Object, Object, Object]][ScriptBlock]::Create(
      ("`$args[0]$op`$args[1]", "`$args[0], `$args[1]")[$op -eq '~']
    )

 

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



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

Синтаксис говорит, что здесь скриптблок дальше кастится в функцию трёх аргументов - кажется в дотнете есть делегаты, или что-то вроде того, где количество аргументов играет роль.
 
Но сам скриптблок не обязательно конструировать дотнетом, есть нативное повершел средство: {}

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 08:55 25-01-2020
YuS_2



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

Цитата:
Скриптблок типа анонимной функции, принимающей два параметра типа Object и возвращающий Object? А дальше…?

Эта часть просто вырвана из контекста...
Используется статический метод Zip класса [Linq.Enumerable]:

Код:
static System.Collections.Generic.IEnumerable[TResult] Zip[TFirst, TSecond, TResult](System.Collections.Generic.IEnumerable[TFirst] first, System.Collections.Generic.IEnumerable[TSecond] second, System.Func[TFirst,TSecond,TResult] resultSelector), static System.Collections.Generic.IEnumerable[System.ValueTuple[TFirst,TSecond]] Zip[TFirst, TSecond](System.Collections.Generic.IEnumerable[TFirst] first, System.Collections.Generic.IEnumerable[TSecond] second)

а скриптблок, дает те самые (first, second, resultSelector), вернее, здесь именно, сам скриптблок:

Код:
resultSelector = [Func[Object, Object, Object]][ScriptBlock]::Create(("`$args[0]$op`$args[1]", "`$args[0], `$args[1]")[$op -eq '~'])

где [$op -eq '~'] - всего лишь:

Код:
if ($op -eq '~'){$true}else{$false}

а по сути 0 и 1, т.е. конкретный элемент массива.
Григорий просто любит такие заковыристые выражения...

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 09:18 25-01-2020 | Исправлено: YuS_2, 09:19 25-01-2020
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2
Непонятно именно, что в скриптблоке, что за синтаксис, что за кавычки, что [$op -eq '~'] там вообще делает

Всего записей: 3504 | Зарегистр. 16-08-2012 | Отправлено: 09:26 25-01-2020
YuS_2



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

Цитата:
что в скриптблоке, что за синтаксис, что за кавычки, что [$op -eq '~'] там вообще делает

если попроще, то:

Код:
("`$args[0]$op`$args[1]", "`$args[0], `$args[1]")[0]
("`$args[0]$op`$args[1]", "`$args[0], `$args[1]")[1]

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 09:32 25-01-2020
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
 
Это функция высшего порядка zip из теории функционального программирования (растущей из лиспа ещё)
zip - пойми через zipper (застёжка-молния)
 
Функция определяет абстрактную операцию над двумя списками: вот и три её параметра
 
Три параметра - существенная характеристика функции zip
То же и в делегатах, потому реализовано через них.
 
 
 
Добавлено:
 
Я сомневаюсь, что надо из спортивного интереса привлекать в повершел весь аппарат ФП.
Для этого есть хардкорный Haskell, или вот F# поближе к народу.
 
 
Добавлено:
 
Автор того поста клонит к тому, что можно и в повершел написать свою библиотеку функций высшего порядка - и либо оформить её в модуль, либо дотсорсить/поместить в профиль
 

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
Не изобретай анонимную функцию.
Вопрос конкретный, что в скрипт блоке, словами описать?
 

YuS_2
Цитата:
если попроще, то:

Всё равно не понятно, что есть, что.
Никак не доходит, что в скриптблоке делается
 
вот это, лямбду, я могу понять:
Код:
var letters= new string[] { "A", "B", "C", "D", "E" };
var numbers= new int[] { 1, 2, 3 };
var q = letters.Zip(numbers, (l, n) => l + n.ToString());


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



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
 
В повершел то же, только другой синтаксис, который в простых случаях короче
 

Код:

    $letters = 'A'..'E'    # конвертация Char в строки в повершел автоматическая
    $numbers = 1..3        # то же самое с целыми, повершел сам их понимает
 
    Z $letters + $numbers
    Z $letters ~ $numbers

 
Функция Zip - в языке откуда твоя цитата является методом любого списка/коллекции,
в повершеле её надо определять самостоятельно - см. определение Z по твоей ссылке
 
 
Добавлено:
 

Цитата:
Не изобретай анонимную функцию.  

 
Не путай анонимные функции и функции высшего порядка

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 10:41 25-01-2020 | Исправлено: LevT, 10:56 25-01-2020
YuS_2



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

Цитата:
Всё равно не понятно, что есть, что.

Да вроде всё наглядно... ну,  если полностью, то как-то так:

Код:
$a = 1..3
$b = 4..6
$op = '+'
[linq.enumerable]::zip($a, $b,[func[object, object, object]][scriptblock]::create(("`$args[0]$op`$args[1]")))

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 11:08 25-01-2020
Открыть новую тему     Написать ответ в эту тему

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

Компьютерный форум 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