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

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

Модерирует : gyra, Maz

Maz (19-09-2020 13:36): Командная строка, батники, сценарии (bat, cmd) Часть 6  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

cchameleone



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Командная строка, батники\сценарии (bat, cmd)
(часть 1) (часть 2) (часть 3) (часть 4)
Вопросы, задачи и их решения по работе с командной строкой, файлами, а также сопутствующие ссылки.

Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!! Чтобы не копировались концевые пробелы из форума, жмите на ссылку "Редактировать" в посте, и уже из редактора копируйте батник без пробелов.
 
Примечание: Большие куски кода заключайте в тэг [ more ].  

Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Microsoft Windows » Сценарии Windows

Полезные ссылки:
· Из Windows XP Professional Product Documentation:
» Описание Cmd.exe » Command shell overview
» Using batch files » Using batch parameters » Using filters » Using command redirection operators
 
· Уроки bat-аники (для начинающих): первый и второй
· Курс из 19 лекций "Командная строка и сценарии Windows"
· Попов А. Командная строка и сценарии Windows (PDF). Курс лекций для начинающих
· Бокалий В. Командная строка (pdf-брошюрка в 20 страниц)
· Александров А., Дибров А. Урок bat-аники (pdf)
· Уильям Р. Станек - Командная строка Windows. Справочник администратора
 
· Скрываем консольные окна, Выполнение BAT-скриптов без вызова окна консоли
· cmdow — изменение параметров и видимости дос-окна, Статья в КОМПЬЮТЕРРАONLINE
· Набор GNU утилит для win32
· HS_Packet.7z - Пакет утилит для организации интерфейса в bat-файлах
· Использование ansi.sys
· blat — отправка почты из консоли
· Команды RunDll32
· Quick Batch File Compiler - Позволяет превратить ваш батник в независимое приложение
· Easy Batch Builder+Rus+Crack - Редактор BAT файлов.Через графический интерфейс программы вы сможете быстро конструировать пакетные файлы практически любой сложности. (В комплекте есть Лоадер созданный с помощью Sign Of Misery некоторые антивирусы обзывают его вирусом. Вам решать: ставить или не ставить) (ЗЕРКАЛО)
· Простой способ получать текущую дату всегда в одном формате (не зависит от языков и настроек) ещё и ещё
· Переход из 32-битной версии cmd.exe в 64-битную (1) (2)(3)

Всего записей: 2271 | Зарегистр. 16-10-2015 | Отправлено: 09:22 29-04-2016 | Исправлено: Maz, 08:47 26-03-2020
DieMaN



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
YuS_2
BorlandIMHO
Спасибо за разъяснения!

Всего записей: 169 | Зарегистр. 28-12-2003 | Отправлено: 15:24 17-12-2018
YuS_2



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

Цитата:
Для этого необходимо вставить перед ним символ "^".

Если это именно cmd, то символ процентов в нем экранируется удваиванием... другие способы экранирования с ним не работают.

Всего записей: 3192 | Зарегистр. 03-02-2009 | Отправлено: 16:37 17-12-2018
DieMaN



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
YuS_2
К сожалению не сработало. Выдаёт сообщение "Ошибка интерпретации параметров".

Всего записей: 169 | Зарегистр. 28-12-2003 | Отправлено: 07:09 18-12-2018
YuS_2



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

Цитата:
К сожалению не сработало.

Всё пропало, шеф? шутка
В том смысле, что для какой-либо помощи требуются подробности (запускаемый скрипт сценария полностью, скриншоты, сообщения об ошибках и т.п.)

Всего записей: 3192 | Зарегистр. 03-02-2009 | Отправлено: 07:16 18-12-2018
DieMaN



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
YuS_2
Скрипт полностью
 
rem Копируем бэкапы виртуальных машин
start /wait net use z: \\es26\BackupVMs$ /user:domain\root /persistent:yes pass
rem start /wait xcopy /Y /R D:\BackupVMs\*.vbk z:\
set "pth=D:\BackupVMs"  
forfiles /p "%pth%" /d 0 /m "*.vbk" /c "cmd /c if @isdir==FALSE xcopy @path z:\"
net use z: /del
EXIT
 
В командной строке повторяю скрипт копируя строчки из батника, на строке:  
forfiles /p "%pth%" /d 0 /m "*.vbk" /c "cmd /c if @isdir==FALSE xcopy @path z:\"
появляется 3 сообщения "Ошибка интерпретации параметров"

Всего записей: 169 | Зарегистр. 28-12-2003 | Отправлено: 07:31 18-12-2018
YuS_2



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

Цитата:
В командной строке повторяю скрипт копируя строчки из батника, на строке:

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

Код:
forfiles /p "%pth%" /d 0 /m "*.vbk" /c "cmd /c if @isdir==FALSE (xcopy @path z:\)"

Всего записей: 3192 | Зарегистр. 03-02-2009 | Отправлено: 07:53 18-12-2018
DieMaN



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
YuS_2
Да винда семёрка. Теперь всё отлично, спасибо огромное!

Всего записей: 169 | Зарегистр. 28-12-2003 | Отправлено: 08:02 18-12-2018
Darth_Max

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как вызвать запрос UAC на права админа из bat-файла?
Как выглядит файл-аналог bat-файла для Windows PowerShell?

Всего записей: 564 | Зарегистр. 02-10-2014 | Отправлено: 20:30 19-12-2018
YuS_2



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

Цитата:
Как вызвать запрос UAC на права админа из bat-файла?

В общем случае, проверка как запущен сценарий, выглядит примерно так:

Код:
@echo off
echo Administrative permissions required. Detecting permissions...
>nul 2>&1 net session&&echo Success: Administrative permissions confirmed.||echo Failure: Current permissions inadequate.
pause

если же требуется самозапуск от имени админа плюс с возможностью использования аргументов, то примерно так:

Код:
@echo off
rem Пакетник с элевацией прав и возможностью ввода параметров для основной программы
rem Тестовый запуск: < run.bat > или < %full_path%\run.bat  1 "2 3" "3" 4 5.1 >
setlocal
>nul 2>&1 net session&&goto run
if /i "%~1"=="yes" goto run
if /i "%~1"=="" set "args=noparam"
set "file=%~f0"
set "args=%* %args%"
set file=""%file:"=%""
set args=%args:"=""%
>"%temp%\uac.vbs" echo set objShell=CreateObject^("Shell.Application"^)
>> "%temp%\uac.vbs" echo objShell.ShellExecute "cmd", "/c ""%file% ""yes"" %args%""", , "runas", 1
cscript /nologo /e:vbscript "%temp%\uac.vbs"
exit /b
 
:run
>nul 2>&1 del "%temp%\uac.vbs"
cd /d "%~dp0"
title %cd%
shift
if "%~1"=="noparam" shift
 
rem Тестовый блок проверки параметров [в боевых условиях блок можно уничтожить]
echo.param_full=[%*]     - [test_param %%*]
echo.param_1=[%1]             - [test_param %%1]
echo.param_2=[%2]             - [test_param %%2]
echo.param_3=[%3]             - [test_param %%3]
echo.param_4=[%4]             - [test_param %%4]
echo.param_5=[%5]             - [test_param %%5]
rem ... и т.д.
rem Конец тестового блока
 
rem Место для основной программы. Текущий каталог = каталог запуска сценария.
 
echo Successfull! UAC unlock. Demo - this line remove...
pause


Цитата:
Как выглядит файл-аналог bat-файла для Windows PowerShell?

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

Код:
$iselevated=$false
foreach ($sid in [security.principal.windowsidentity]::getcurrent().groups){
    if ($sid.translate([security.principal.securityidentifier]).iswellknown(
        [security.principal.wellknownsidtype]::builtinadministratorssid
    )){$iselevated=$true}
}
if ($iselevated){'Success: Administrative permissions confirmed.'} else {
    'Failure: Current permissions inadequate.'
}

а так, с запросом элевации прав, если их нет:

Код:
$iselevated=$false
foreach ($sid in [security.principal.windowsidentity]::getcurrent().groups){
    if ($sid.translate([security.principal.securityidentifier]).iswellknown(
        [security.principal.wellknownsidtype]::builtinadministratorssid
    )){$iselevated=$true}
}
if (!$iselevated){
    saps 'powershell.exe' -arg {-noexit  
        -c write-host Success: Administrative permissions confirmed.
    } -verb runas -wait
} else {
    'Success: Administrative permissions confirmed.'
}


Всего записей: 3192 | Зарегистр. 03-02-2009 | Отправлено: 07:47 20-12-2018
Darth_Max

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

Цитата:
Что значит как выглядит? Вообще, по умолчанию, сценарии powershell не запускаются как батники...

Просто я умею писать батники, а для PowerShell не умею. Ищу, с чего начинать учиться.
Какое расширение у аналога батника для PowerShell?

Всего записей: 564 | Зарегистр. 02-10-2014 | Отправлено: 20:52 20-12-2018 | Исправлено: Darth_Max, 20:53 20-12-2018
YuS_2



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

Цитата:
Какое расширение у аналога батника для PowerShell?

расширение скрипта powershell - .ps1, но это не аналог батника.
А для запуска скрипта powershell, можно написать такой батник:

Код:
@echo off
echo Выполняем...
powershell -ex bypass .\script.ps1
echo Готово.
pause

либо внести изменения в реестр, чтобы сценарии powershell запускались напрямую (но обычно, это не рекомендуется).

Всего записей: 3192 | Зарегистр. 03-02-2009 | Отправлено: 08:36 21-12-2018
IFMA



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

Код:
@echo off  
xcopy /d /y c:\In\Price.xls d:\Out
c:\PDF24\pdf24-DocTool.exe -applyProfile -profile "default/good"  -inputDir d:\Out\Price.xls -outputDir d:\Price\  -convertToPDF "%%a"
exit

Надо чтобы переход  к  конвертации происходил только после копирования из папки In в папку Out  файла с более поздней датой создания. И, eсли даты создания файлов в папках In и Out совпадают, то работа батника  заканчивалась бы.

Всего записей: 892 | Зарегистр. 10-09-2004 | Отправлено: 11:45 24-12-2018
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброе время, IFMA

Код:
 
@echo off  
xcopy /d /y c:\In\Price.xls d:\Out  | findstr /i "Price.xls" && c:\PDF24\pdf24-DocTool.exe -applyProfile -profile "default/good"  -inputDir d:\Out\Price.xls -outputDir d:\Price\  -convertToPDF "%%a"  
exit
 

Всего записей: 1825 | Зарегистр. 07-08-2002 | Отправлено: 15:51 24-12-2018
destiny_child



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
приветствую!
как коротко спросить в батнике: если мы в винде 7 или выше - то делаем то-то .....?

Всего записей: 1400 | Зарегистр. 01-04-2006 | Отправлено: 18:17 24-12-2018 | Исправлено: destiny_child, 18:17 24-12-2018
drondo



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите с простым батником пожалуйста. Папка с сериалами, нужно обработать каждый файл - вырезать первые 30 секунд и сохранить в формате %originalname%_recode.mkv.
синтаксис самого ffmpeg в моей ситуации такой:

Код:
ffmpeg -ss 00:00:30 -i input.mkv -c copy output.mkv

как сделать цикл для обработки всех файлов и подстановки имени+суффикс?  
 
 

Всего записей: 460 | Зарегистр. 28-10-2005 | Отправлено: 01:58 26-12-2018 | Исправлено: drondo, 02:28 26-12-2018
Pasha_ZZZ



Запрет на пост
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
drondo
Если в батнике - то
Цитата:
for %%a in (*.mkv) do ffmpeg -ss 00:00:30 -i "%%a" -c copy "%%~dpna_recode%%~xa"

Всего записей: 9946 | Зарегистр. 11-03-2002 | Отправлено: 06:52 26-12-2018
A27

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, считать результат stdout или stderr выполнения команды сразу в переменную можно, как?
Или сперва нужно в файл >file и только затем из него читать в переменную?

Всего записей: 55 | Зарегистр. 30-03-2017 | Отправлено: 19:44 13-01-2019 | Исправлено: A27, 19:46 13-01-2019
Inoz2000



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
A27
что-то типа
for /f "delims=" %e in ('2^>^&1 dir B:') do echo *%e*

----------
Мы все умрём. (-:

Всего записей: 3333 | Зарегистр. 23-04-2009 | Отправлено: 19:54 13-01-2019
A27

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Inoz2000, спасибо, совсем забыл про for.

Всего записей: 55 | Зарегистр. 30-03-2017 | Отправлено: 08:26 14-01-2019
redson



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

есть скрипт License_Status.cmd в кодировке utf-8 (chcp 65001)
 
вот с таким содержимым:
 
for /f "tokens=3 delims=: " %%a in (
    'cscript //nologo "%systemroot%\system32\slmgr.vbs" /dli ^| find "Состояние лицензии:"'  
) do set "licenseStatus=%%a"
 
if /i "%licenseStatus%"=="имеет" (
  echo Windows Activation Successful!!!
) else (
  echo Problem!!!
)
 
pause
 
 
естественно он не работает т.к ему нужна кодировка chcp 866, просьба помочь скрипту находясь в кодировке utf-8 (chcp 65001) уметь парсить вывод в кодировке 866

Всего записей: 1301 | Зарегистр. 23-04-2007 | Отправлено: 12:01 14-01-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

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd)
Maz (19-09-2020 13:36): Командная строка, батники, сценарии (bat, cmd) Часть 6


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

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru