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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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

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

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

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

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

Цитата:
Так он разве работает? У вас %%B всегда пустой.

Да, работает.

Всего записей: 149 | Зарегистр. 12-10-2012 | Отправлено: 20:14 19-11-2021 | Исправлено: Silver Raven, 20:15 19-11-2021
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Silver Raven
И "=" справа к значениям не добавляет? Проверьте - замените

Код:
 
for /f "usebackq eol=; tokens=1,2* delims=" %%A in ("%~1") do set "$%%A=%%B"
 

на

Код:
 
for /f "usebackq eol=; tokens=1,2* delims=" %%A in ("%~1") do (
echo Test AB "$%%A=%%B"
echo Test A "$%%A"
set "$%%A=%%B"
)
 


----------
Magically yours
Raistlin

Всего записей: 3962 | Зарегистр. 18-04-2005 | Отправлено: 21:23 19-11-2021 | Исправлено: GCRaistlin, 21:26 19-11-2021
Silver Raven

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

Цитата:
И "=" справа к значениям не добавляет? Проверьте - замените

Добавляет. (+ выдает список всех параметров и секций конфигурационного файла)
 

Всего записей: 149 | Зарегистр. 12-10-2012 | Отправлено: 22:25 19-11-2021
GCRaistlin



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

Цитата:
Добавляет.

Иными словами, не работает.


----------
Magically yours
Raistlin

Всего записей: 3962 | Зарегистр. 18-04-2005 | Отправлено: 22:29 19-11-2021
Silver Raven

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

Всего записей: 149 | Зарегистр. 12-10-2012 | Отправлено: 00:44 20-11-2021
invis1ble977



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго времени суток! Подскажите пожалуйста, как вытащить данные ключа в реестре через .bat?
В интернете куча таких скриптов готовых, но любой из них пишет невозможно найти раздел или параметр в реестре, вот один из них

Код:
@Echo Off
For /F "Tokens=2*" %%I In ('Reg Query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Edge" /V DisplayVersion') Do Set DisplayVersion=%%J
Echo Значение DisplayVersion в реестре - %DisplayVersion%
pause

еще можно UninstallString, Version как вариант.
Сама задача, получить версию браузера и результат в переменную, для дальнейшего получение пути к нему) уже не знаю что делать, система win10 21h2 x64.

Всего записей: 69 | Зарегистр. 14-06-2021 | Отправлено: 07:57 21-11-2021 | Исправлено: invis1ble977, 09:10 21-11-2021
Fenrizz



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
invis1ble977
А через Regedit этот ключ виден?

Всего записей: 677 | Зарегистр. 12-09-2017 | Отправлено: 10:15 21-11-2021
invis1ble977



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

Цитата:
А через Regedit этот ключ виден?

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

Код:
echo off
 
echo Делаем бекап настроек
REG EXPORT "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Edge" %~dp0\MicrosoftEdgeBackup.reg
 
echo Преобразование данных в файле для правильного парса
SetLocal EnableDelayedExpansion
set "file=MicrosoftEdgeBackup.reg"
<"%file%" >"%temp%\%~n0" (for /f "tokens=*" %%v in ('more') do (set "i=%%v"&set "i=!i:"=!"
  echo.!i!))
>nul move "%temp%\%~n0" "%file%"
 
echo Меняем кодировку
cmd /a /c type MicrosoftEdgeBackup.reg>ME.reg
 
echo Удаляем исходный файл
del /q %~dp0\MicrosoftEdgeBackup.reg
 
echo Парсим данные
SetLocal EnableExtensions
set file=%~dp0ME.reg
For /F "UseBackQ tokens=1-2 delims==(" %%a in ("%file%") do if %%a==Version set ver=%%b
echo Version=%ver%
 
echo Удаляем остатки после парсинга
del /q %~dp0\ME.reg
 
echo Удаляем браузер Microsoft Edge
"%PROGRAMFILES(x86)%\Microsoft\Edge\Application\%ver%\Installer\setup.exe" --uninstall --force-uninstall --multi-install --msedge --system-level
 
echo Чистим систему от хвостов
rmdir /s /q "%PROGRAMFILES(x86)%\Microsoft\Edge"
rmdir /s /q "%PROGRAMFILES(x86)%\Microsoft\Temp"
del /q "%USERPROFILE%\Desktop\Microsoft Edge.lnk"
del /q "%USERPROFILE%\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\Microsoft Edge.lnk"
exit

Всего записей: 69 | Зарегистр. 14-06-2021 | Отправлено: 11:29 21-11-2021
VV189



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

Код:
for /F "tokens=*" %1 in ('wevtutil.exe el') DO wevtutil.exe gl "%1" /f:text  >> .\FullEventsInfo.txt

работает из консоли, но из cmd файла отваливается с ошибкой

Код:
Непредвиденное появление: in

Всего записей: 500 | Зарегистр. 10-09-2006 | Отправлено: 20:44 21-11-2021
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VV189
Потому что надо удваивать %. Смотри for /?.

----------
Magically yours
Raistlin

Всего записей: 3962 | Зарегистр. 18-04-2005 | Отправлено: 20:51 21-11-2021
VV189



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GCRaistlin, спасибо!  
my bad

Всего записей: 500 | Зарегистр. 10-09-2006 | Отправлено: 20:58 21-11-2021
invis1ble977



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

Цитата:
Да, я уже решил проблему по другому, поскольку не шарю в этом, то получилось так, хоть и коряво но понять можно))
 

Удаляет Microsoft Edge любой версии из системы и чистит следы.

Код:
echo off
 
echo Делаем бекап настроек
%windir%\SysWOW64\REG EXPORT "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Edge" %~dp0\MicrosoftEdgeBackup.reg
 

 

Цитата:
А через Regedit этот ключ виден?

Нет (но если запускать regedit от сюда %windir%\SysWOW64\ ) то раздел виден, думаю и скрипт рабочий
Цитата:
@Echo Off
For /F "Tokens=2*" %%I In ('Reg Query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Edge" /V DisplayVersion') Do Set DisplayVersion=%%J
Echo Значение DisplayVersion в реестре - %DisplayVersion%
pause
если добавить перед Reg Query %windir%\SysWOW64.
upd. Так сработало:

Код:
@Echo Off
cd %windir%\SysWOW64\
For /F "Tokens=2*" %%I In ('Reg Query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Edge" /V DisplayVersion') Do Set DisplayVersion=%%J
Echo Значение DisplayVersion в реестре - %DisplayVersion%
pause

Всего записей: 69 | Зарегистр. 14-06-2021 | Отправлено: 10:46 22-11-2021 | Исправлено: invis1ble977, 11:08 22-11-2021
Pasha_ZZZ



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
invis1ble977
Вообще-то у команды reg есть параметры /reg:32 или /reg:64

Всего записей: 12375 | Зарегистр. 11-03-2002 | Отправлено: 11:40 22-11-2021
GCRaistlin



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

Цитата:
Так сработало


Код:
 
  /reg:32  Specifies the key should be accessed using the 32-bit registry view.
 
  /reg:64  Specifies the key should be accessed using the 64-bit registry view.
 


----------
Magically yours
Raistlin

Всего записей: 3962 | Зарегистр. 18-04-2005 | Отправлено: 11:41 22-11-2021
LEVONLI



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нужна помощь..
Есть батник, который проверяет наличие рядом с собой файла с определённым названием и, если такое название есть, запускает этот файл..
 
Вот часть кода из батника, она нормально отрабатывает с частью имени (eav) в названии файла, но файл может быть с разными названиями и там нужен поиск именно по определённым частям в названии (eav, eis, efs, essp и т.д.).. полное название файла eav_nt64.exe, но может быть и eav_nt64.msi и т.д.  
 

Код:
::-----------------------------------------------------------------------------------------------------------------
:GotAdmin
rem Установка антивируса
pushd "%~dp0"
rem Проверка на наличие файлов рядом с батником
for /f %%i in ('dir /b /a-d') do set /a num+=1
if %num% equ 1 echo В папке только батник, нужен установочный файл антивируса рядом
if %num% equ 2 goto InstallEset
if %num% gtr 2 echo В папке с батником должен находиться только один установочный файл антивируса
:InstallEset
rem Проверка названия установочного файла
pushd "%~dp0"
dir /b /a-d | find /i "eav">temp.txt
set /p string1="" <temp.txt
del temp.txt  
if errorlevel 0 (start "%~dp0"^& %string1%)
::-----------------------------------------------------------------------------------------------------------------

Всего записей: 1548 | Зарегистр. 06-02-2007 | Отправлено: 22:26 22-11-2021
Fenrizz



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

Код:
FOR %%G IN (eav*.exe eav*.msi eis*.exe eis*.msi efs*.exe efs*.msi essp*.exe essp*.msi) do if exist %%G set string1=%%G

Если будет найдено несколько файлов, соответствующих маске, то в переменной string1 будет сохранено имя последнего найденного

Всего записей: 677 | Зарегистр. 12-09-2017 | Отправлено: 05:48 23-11-2021 | Исправлено: Fenrizz, 08:19 23-11-2021
LEVONLI



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Fenrizz
элегантно и просто, благодарю, всё отрабатывает теперь отлично
 

Код:
:InstallEset
rem Проверка названия установочного файла
pushd "%~dp0"
for %%g in (eav*.exe eav*.msi eis*.exe eis*.msi efs*.exe efs*.msi essp*.exe essp*.msi) do if exist %%g set string1=%%g
if '%string1%' gtr '0' ( start "%~dp0"^& %string1%
goto CheckExist
) else ( echo В папке нет файла с установочным файлом антивируса...
)


Всего записей: 1548 | Зарегистр. 06-02-2007 | Отправлено: 09:21 23-11-2021
Polyarnik70

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть bat-файл вот с таким содержимым:

Код:
 
@ECHO OFF
 
:: ------------EXTRA CODE TO CHANGE DIRECTORY-------------
echo %~n0%~x0 started from Directory: %~d0%~p0
%~d0
cd %~d0%~p0
:: -------------------------------------------------------
 
IF NOT EXIST HOSTS GOTO noHostsFile
IF "%OS%"=="Windows_NT" GOTO HostsFile
IF EXIST %winbootdir%\HOSTS*.* ATTRIB +A -H -R -S %winbootdir%\HOSTS*.*>NUL
IF EXIST %winbootdir%\HOSTS.MVP DEL %winbootdir%\HOSTS.MVP>NUL
IF EXIST %winbootdir%\HOSTS REN %winbootdir%\HOSTS HOSTS.MVP>NUL
IF EXIST %winbootdir%\NUL COPY /Y HOSTS %winbootdir%>NUL
GOTO noHostsFile
:HostsFile
IF EXIST %windir%\SYSTEM32\DRIVERS\ETC\HOSTS*.* ATTRIB +A -H -R -S %windir%\SYSTEM32\DRIVERS\ETC\HOSTS*.*>NUL
IF EXIST %windir%\SYSTEM32\DRIVERS\ETC\HOSTS.MVP DEL %windir%\SYSTEM32\DRIVERS\ETC\HOSTS.MVP>NUL
IF EXIST %windir%\SYSTEM32\DRIVERS\ETC\HOSTS REN %windir%\SYSTEM32\DRIVERS\ETC\HOSTS HOSTS.MVP>NUL
IF EXIST %windir%\SYSTEM32\DRIVERS\ETC\NUL COPY /Y HOSTS %windir%\SYSTEM32\DRIVERS\ETC>NUL
color 1F
echo.
echo ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ
echo Э ЪДДДїЮ
echo Э THE MVPS HOSTS FILE IS NOW UPDATED і ы іЮ
echo Э АДДДЩЮ
echo. ЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯ
echo.
echo.
echo. Previous version saved and renamed to HOSTS.MVP
:noHostsFile
Pause
EXIT
 

С его помощью происходит замена файла hosts на тот который лежит рядом с этим батником.
Помогите сюда прикрутить вот такие строки:

Код:
 
del HOSTS
wget.exe https://__________________
 

Чтобы при запуске батника удалялся старый файл hosts, потом скачивался новый и затем происходила его замена.
Если делаю отдельный bat-файл для закачки hosts-a и из него запускается батник на замену, то замена не происходит, пишет "отказано в допуске".

Всего записей: 3 | Зарегистр. 13-06-2010 | Отправлено: 03:01 25-11-2021 | Исправлено: Polyarnik70, 03:02 25-11-2021
king_stiven

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

Код:
IF NOT EXIST HOSTS GOTO noHostsFile  

 
это

Код:
del /q HOSTS>NUL
start "" /wait /b wget.exe -q https://__________________  
IF NOT EXIST HOSTS GOTO noHostsFile  
 


Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 00:12 01-12-2021
Silver Raven

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я вот подумал, а если полностью отказаться от прошлой реализации чтения списка файлов и вывода сообщения с их именами, при отсутствии... И сделать как-то так:
 
1. Сверяем список файлов из внешнего .cfg с их физическим наличием в указанных подпапкх (имена файлов в этих подпапках могут совпадать!):
 

Код:
 
Silver Raven mods pack data\Additional options\Ingame UI\Default\Interface\console.swf
Silver Raven mods pack data\Additional options\Ingame UI\Default\Interface\dialoguemenu.swf
Silver Raven mods pack data\Additional options\Ingame UI\Default\Interface\fontconfig_ru.txt
и т.д.
 

(каждый путь с новой строки, могут быть пробелы в путях и именах файлов, также может присутствовать символ ! Необходимо его экранирование)
 
2. Если не хватает хотя бы одного - выводим сообщение об ошибке.
 
3. else - выполняем другой код.

Всего записей: 149 | Зарегистр. 12-10-2012 | Отправлено: 23:15 01-12-2021 | Исправлено: Silver Raven, 23:17 01-12-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

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