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

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

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

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

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

Maz



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

Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!! Чтобы не копировались концевые пробелы из форума, жмите на ссылку "Редактировать" в посте, и уже из редактора копируйте батник без пробелов.
 
Примечание: Большие куски кода заключайте в тэг [ 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. Справочник администратора
 
· Выполнение BAT-скриптов без вызова окна консоли
· cmdow - изменение параметров и видимости дос-окна, Статья в КОМПЬЮТЕРРАONLINE
· Набор GNU утилит для win32
· HS_Packet.7z - Пакет утилит для организации интерфейса в bat-файлах
· blat - отправка почты из консоли
· Easy Batch Builder+Rus+Crack - Редактор BAT файлов.Через графический интерфейс программы вы сможете быстро конструировать пакетные файлы практически любой сложности. (В комплекте есть Лоадер созданный с помощью Sign Of Misery некоторые антивирусы обзывают его вирусом. Вам решать: ставить или не ставить) (ЗЕРКАЛО)
· Простой способ получать текущую дату всегда в одном формате (не зависит от языков и настроек) ещё и ещё
· Переход из 32-битной версии cmd.exe в 64-битную (1) (2)(3)
 
· Архив всевозможных версий cmd.exe (от Windows NT 3.10 до Windows 11 +Win95cmd +ReactOS) и command.com (DOS 5.0 и выше). Старые командные процессоры можно запускать на более новых ОС, хотя не всё может работать корректно. Подробная документация по командам cmd.exe и стандартным утилитам ОС для NT 3.51, NT 5.0 (Windows 2000) и NT 5.2 (Windows Server 2003). Сборник представляет исторический интерес, а также незаменим для тех, у кого появилось желание сделать свои скрипты работоспобными не только на своей версии ОС.
 
· Большой сборник одним архивом: Сотни Win32 утилит командной строки, нетривиальные .cmd файлы, .bat miniperl скрипты (не требующие полноценной установки Perl), FAR Manager с плагинами и настройками, разное для DOS/DOSBox (откуда под Win32 интерес представляют три продвинутых "мультисистемных" .bat файла да ещё, может быть, оболочка Necromancer DOS Navigator с поддержкой LFN и доступом к буферу обмена Windows). Краткие описания всего - в файликах files.bbs

Всего записей: 38888 | Зарегистр. 26-02-2002 | Отправлено: 13:35 19-09-2020 | Исправлено: metatrop, 07:55 29-11-2022
shok

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

Цитата:
Нет, так не выйдет

я бы как-то так попробовал c перетаскиванием папки на батник:
 

Код:
for /r "%~f1" %%A in (*.exe) do call :_addreg %%A
pause
exit
 
:_addreg
addreg %1
exit /b

Всего записей: 11542 | Зарегистр. 30-04-2006 | Отправлено: 02:12 29-07-2021
kot1313



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

Цитата:
я бы как-то так попробовал c перетаскиванием папки на батник:  

После перетягивания в окно консоли оно сразу закрывается ...

Всего записей: 2522 | Зарегистр. 11-12-2002 | Отправлено: 09:27 29-07-2021
shok

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

Цитата:
После перетягивания в окно консоли оно сразу закрывается ...
 

я не говорил про "окно консоли"
add
ещё можно батник поместить в папку SendTo

Всего записей: 11542 | Зарегистр. 30-04-2006 | Отправлено: 09:49 29-07-2021
Sinclair83

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

Цитата:
Это уже не батник, а программа с полноценным UI должна быть.

Согласен с GCRaistlin.
 
Artem_Butenko
А зачем потребовалось две концепции (отдельно для папок и файлов)?
Можно всё в одном реализовать. Только здесь это офтоп, так как тема по-батникам. Если не критично использование сторонней программы, то стучитесь в ЛС.

Всего записей: 757 | Зарегистр. 07-01-2009 | Отправлено: 15:52 29-07-2021
kraeved



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

Цитата:
Artem_Butenko
1.Только для  выделенных исполняемых файлов (случайно выделенные файлы с иным расширением, должны игнорироваться), путём их "перетаскивания" в окно командной строки, создать строковые параметр в системном реестре, согласно пути, - "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers". Полный путь к исполняемому файлу заключать в кавычки нельзя! Пример строкового параметра, - "C:\MyProgram1\MyProgram1.exe", со значением ~ RUNASADMIN (после символа "тильда" пробел обязателен; значение параметра в кавычк заключать нельзя). … Если можно, то реализовать функцию вывода ошибок.

Открыть консольное окно с ожиданием ввода несложно. Например, set /p "_files=". Перетащим
несколько файлов на такое окно — увы, вставился путь лишь одного из них. Перетащим по одному:
"D:\Мои документы\1.exe""E:\Разбор полётов"D:\МультфильмыD:\2.exe. Как видите, пути слиплись
и не просматривается единый делитель, чтобы разобрать строку на элементы. Поэтому остаётся
использовать классический способ — перетаскивать не на открытое консольное окно, а на батник.
 
   
 
Сохраните код, например, как exeToReg.cmd на Рабочем столе, затем накидывайте файлы и папки.

Код:
@echo off
 
rem Чтобы вести лог ошибок в кодировке UTF8, удалите rem на следующей строке
rem chcp 65001 >nul

 
set "_ext=exe"
set "_logErr=%~dp0exeToReg_errors.txt"
set "_argsCount=0"
 
rem Фильтруем очередь по расширению
:args
    for %%# in (%1) do (
        rem Что на входе?
        if "%%~a#" geq "d" (
            rem Папки
            pushd "%%~#"
            for /r %%@ in (*.%_ext%) do (
                set /a "_argsCount+=1"
                call set "_argsArray[%%_argsCount%%]=%%~@"
            )
            popd
        ) else if "%%~a#" geq "-" (
            rem Файлы
            rem Добавьте /i после if, если помимо расширения exe нужно EXE
            if "%%~x#"==".%_ext%" (
                set /a "_argsCount+=1"
                call set "_argsArray[%%_argsCount%%]=%%~#"
            )
        ) else (
            rem Ошибки
            echo %date% %time%  Error: "%%~#" >> "%_logErr%"
        )
    )
    shift
    if not "%~1"=="" goto :args
 
if %_argsCount%==0 (
    rem Если очередь оказалась пустой, то выходим
    echo Nothing to do. Drag'n'drop some EXECUTABLES on me.
    goto :end
    ) else (
    rem Или же показываем, с чем будем работать
    echo Items to process: %_argsCount%
    call :items
)
 
rem Убедимся, что пользователь желает изменить реестр
choice /n /c cq /m "Shall we (c)ontinue or (q)uit? "
if %errorlevel%==1 (call :items registry) else (exit)
 
:end
    pause & exit
 
:items
    setlocal enableDelayedExpansion & echo;
    for /l %%# in (1,1,%_argsCount%) do (
        if "%1"=="registry" (
            rem Можно добавить ключ /f для тихой перезаписи. А ключ /t REG_SZ необязателен, т.к. этот тип данных по умолчанию.
            reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "!_argsArray[%%#]!" /d "~ RUNASADMIN"
        ) else (
            echo * !_argsArray[%%#]!
        )
    )
    endlocal & echo; & exit /b

 
2021-08-01
* Добавил обработку папок (избегайте папок с точкой или пробелом на конце).
* Упростил код обработки папок и файлов.
* Добавил вывод возможных ошибок в лог рядом с батником.
* Добавил возможность вести лог ошибок в кодировке UTF8.

Всего записей: 1000 | Зарегистр. 01-03-2003 | Отправлено: 14:52 30-07-2021 | Исправлено: kraeved, 03:22 04-08-2021
kot1313



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

Цитата:
Сохраните код, например, как exeToReg.cmd на Рабочем столе, затем перетаскивайте на него файлы

Добавьте пожалуста в Ваш код два дополнительных функционала:
 
1. возможость перетягивать не тока файлы, но и Папки с дальнейшим "захватом" вложенных экхещников
2. способность "захвата" не тока корневой папки, но и вложенных папок и, соответственно, файлов exe в них.
 
Заранее Спасибо

Всего записей: 2522 | Зарегистр. 11-12-2002 | Отправлено: 18:24 30-07-2021 | Исправлено: kot1313, 18:24 30-07-2021
shok

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

Цитата:
 дополнительных функционала

 
концепт я уже приводил для папок. вот как он работает. объедини с файловым "отадминистратором"
 
   
 
 
 
exe_ADMIN.bat

Код:
@echo off
for /r "%~f1" %%A in (*.exe) do call :addreg "" "%%A"
echo. Press any key from exit. . .&pause>nul & EXIT
:addreg
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v %2 /d "~ RUNASADMIN" /f
exit /b

Всего записей: 11542 | Зарегистр. 30-04-2006 | Отправлено: 18:16 31-07-2021
kot1313



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

Цитата:
концепт я уже приводил для папок. вот как он работает

Да усё работает, просто я проглядел, когда Вы выкладывали батник для папок.
Мой косяк

Всего записей: 2522 | Зарегистр. 11-12-2002 | Отправлено: 19:23 31-07-2021
kraeved



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

Цитата:
kot1313
Добавьте пожалуста … возможость перетягивать не тока файлы, но и Папки с "захватом" вложенных экхещников

Добавил.

Всего записей: 1000 | Зарегистр. 01-03-2003 | Отправлено: 03:59 01-08-2021 | Исправлено: kraeved, 19:11 01-08-2021
kot1313



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kraeved
 Усё прекрасно работает    
 
Тока код cmd надо копировать напрямую из текста, а не из режима редактирования
(по началу скопировал по привычке из режима редактирования, и, естественно,  
появились лишние сущности - кмдешник начал ругаться на слова "Colour")

Всего записей: 2522 | Зарегистр. 11-12-2002 | Отправлено: 05:46 01-08-2021 | Исправлено: kot1313, 05:47 01-08-2021
shok

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

Цитата:
Усё прекрасно работает

 
чтобы усё работало "от администратора" - в политике безопасности подкрутить чуток
 
 
   
 
 
 
 
 

Всего записей: 11542 | Зарегистр. 30-04-2006 | Отправлено: 06:25 01-08-2021
kot1313



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

Цитата:
чтобы усё работало "от администратора" - в политике безопасности подкрутить чуток

Первое моё правило настройки Винды - отключить UAC
Так что эта рекомендация не для меня

Всего записей: 2522 | Зарегистр. 11-12-2002 | Отправлено: 21:02 01-08-2021
shok

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

Цитата:
Первое моё правило настройки Винды - отключить UAC

это не UAC

Всего записей: 11542 | Зарегистр. 30-04-2006 | Отправлено: 21:06 01-08-2021
kot1313



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
shok
UserAccountControl переводится с языка наших заклятых партнёров как  
Контроль Учётныйх Записей
UAC = КУЗ
 
Вывод - отключив напрочь КУЗ я и так получаю все плюшки, которые в противном случае нужно будет настраивать в т.ч. и через политики безопасности

Всего записей: 2522 | Зарегистр. 11-12-2002 | Отправлено: 21:25 01-08-2021 | Исправлено: kot1313, 21:26 01-08-2021
shok

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

Цитата:
КУЗ

 
   
 
КУЗ не добавляет привилегии Администратора

Всего записей: 11542 | Зарегистр. 30-04-2006 | Отправлено: 21:35 01-08-2021 | Исправлено: shok, 00:58 02-08-2021
kot1313



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

Цитата:
КУЗ не не добавляет привилегии Администратора

У меня по умолчанию эта надпись стоит в этом окне.
Кстати, даже никогда не обращал на неё внимание ...
А запуск от администратора (как и от TI) есть отдельными пунктами в контекстном меню

Всего записей: 2522 | Зарегистр. 11-12-2002 | Отправлено: 21:43 01-08-2021
Fenrizz



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

Код:
cmd /min /C "set __COMPAT_LAYER=RunAsInvoker && start "" "reg add ...""

 
https://winitpro.ru/index.php/2018/06/28/zapusk-programmy-bez-prav-admina-i-zaprosa-uac/

Всего записей: 683 | Зарегистр. 12-09-2017 | Отправлено: 22:20 01-08-2021 | Исправлено: Fenrizz, 11:45 02-08-2021
shok

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

Цитата:
2021-08-01

код не понимал расширения ".EXE"  (в верхнем регистре)
проблема решилась ключом /i
 
 

Код:
 rem Файлы
            if /i "%%~x#"==".%_ext%" (
                set /a "_argsCount+=1"

Всего записей: 11542 | Зарегистр. 30-04-2006 | Отправлено: 01:47 04-08-2021 | Исправлено: shok, 01:49 04-08-2021
yozhic



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Парни, подскажите, пожалуйста, как сделать:
Каждую строку из одного txt-файла нужно извлечь в отдельный txt-файл.
Иными словами: нужен построчный split.

Всего записей: 2780 | Зарегистр. 20-03-2008 | Отправлено: 11:03 06-08-2021 | Исправлено: yozhic, 11:11 06-08-2021
Fenrizz



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

Код:
@echo off
setlocal EnableDelayedExpansion
 
set /a line=1
 
for /F "tokens=*" %%A in (file.txt) do (  
set /a line+=1
echo %%A >file_!line!.txt )

 
или покрасивее

Код:
@echo off
setlocal EnableDelayedExpansion
 
set /a line=1
 
for /F "tokens=*" %%A in (file.txt) do (  
set /a line+=1
IF !line! leq 9 echo %%A >file_00!line!.txt
IF !line! geq 10 IF !line! leq 99 echo %%A >file_0!line!.txt
IF !line! geq 100 echo %%A >file_!line!.txt )

Всего записей: 683 | Зарегистр. 12-09-2017 | Отправлено: 11:42 06-08-2021 | Исправлено: Fenrizz, 13:22 06-08-2021
Открыть новую тему     Написать ответ в эту тему

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

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии - bat, cmd


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru