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

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

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

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.51 до Windows 10) и command.com (DOS 5.0 и выше). Старые командные процессоры можно запускать на более новых ОС, хотя не всё может работать корректно. Подробная документация по командам cmd.exe и стандартным утилитам ОС для NT 3.51, NT 4.0, NT 5.0 (Windows 2000) и NT 5.2 (Windows Server 2003). Сборник представляет исторический интерес, а также незаменим для тех, у кого появилось желание сделать свои скрипты работоспобными не только на текущей версии ОС. Ссылки wdho.ru tinyupload.com dbree.org
 
· Сборник одним архивом: Сотни Win32 утилит командной строки, нетривиальные .cmd файлы, .bat miniperl скрипты (не требующие полноценной установки Perl), FAR Manager с плагинами и настройками, разное для DOS/DOSBox (откуда под Win32 интерес представляют три продвинутых "мультисистемных" .bat файла да ещё, может быть, оболочка Necromancer DOS Navigator с поддержкой LFN и доступом к буферу обмена Windows). Краткие описания всего - в файликах files.bbs

Всего записей: 37503 | Зарегистр. 26-02-2002 | Отправлено: 13:35 19-09-2020 | Исправлено: Maz, 07:16 24-04-2021
Silver Raven

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

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

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

Всего записей: 127 | Зарегистр. 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

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

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

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

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

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



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

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

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


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

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

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

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



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго времени суток! Подскажите пожалуйста, как вытащить данные ключа в реестре через .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.

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



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

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



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

Цитата:
А через 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

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



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

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

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

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

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



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

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

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



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

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



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

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

Удаляет 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

Всего записей: 10 | Зарегистр. 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

Всего записей: 10129 | Зарегистр. 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

Всего записей: 3142 | Зарегистр. 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%)
::-----------------------------------------------------------------------------------------------------------------

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



Full 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 будет сохранено имя последнего найденного

Всего записей: 428 | Зарегистр. 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 В папке нет файла с установочным файлом антивируса...
)


Всего записей: 1359 | Зарегистр. 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
Открыть новую тему     Написать ответ в эту тему

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

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


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru