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

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

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

Maz



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

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

Всего записей: 39656 | Зарегистр. 26-02-2002 | Отправлено: 22:41 20-06-2024 | Исправлено: Maz, 21:52 28-09-2024
Inoz2000



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BorlandIMHO
Цитата:
Или на поше
этот Kero1 новее Windows XP ничего не …

Всего записей: 5498 | Зарегистр. 23-04-2009 | Отправлено: 00:23 30-09-2025
Haxtigal

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Старый стал.
Есть файл DelTemp.bat
кнопка в ТС
set delfolder=C:\TEMP
pushd "%delfolder%"
rmdir /s /q "%delfolder%"
popd
.
Есть del_stream
 
set delfolder=C:\_acestream_cache_
pushd "%delfolder%"
rmdir /s /q "%delfolder%"
popd  
как две команды навесить на одну кнопку?

Всего записей: 22 | Зарегистр. 23-08-2025 | Отправлено: 04:50 30-09-2025 | Исправлено: Haxtigal, 04:53 30-09-2025
ipmanyak



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Haxtigal в один батник  засунуть не?  
в DelTemp.bat добавь второй, итого  

Код:
 
set delfolder=C:\TEMP
pushd "%delfolder%"
rmdir /s /q "%delfolder%"
popd
::
set delfolder=C:\_acestream_cache_
pushd "%delfolder%"
rmdir /s /q "%delfolder%"
popd  
 
 

 
не понял смысла  здесь команд pushd и popd, не проще так:

Код:
 
set delfolder=C:\TEMP
rmdir /s /q "%delfolder%"
::
set delfolder=C:\_acestream_cache_
rmdir /s /q "%delfolder%"
cd "%delfolder%"    #  если точно нужно попасть потом в этот каталог
   
 



----------
В сортире лучше быть юзером, чем админом...

Всего записей: 12272 | Зарегистр. 10-12-2003 | Отправлено: 05:17 30-09-2025 | Исправлено: ipmanyak, 05:23 30-09-2025
Haxtigal

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ipmanyak
Благодарю
А по поводу

Цитата:
не понял смысла  здесь команд pushd и popd

видимо я неправильно в своё время понял следующее:
POPD - возврат в каталог, который был заполнен предыдущей командой PUSHD, т.е. – в исходный текущий каталог.  

Всего записей: 22 | Зарегистр. 23-08-2025 | Отправлено: 09:29 30-09-2025 | Исправлено: Haxtigal, 09:29 30-09-2025
BorlandIMHO

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

Цитата:
не понял смысла  здесь команд pushd и popd

В задаче "очистить папку %TEMP%" я лично использовал pushd/popd для того, чтобы папка именно очищалась, а не удалялась. Думаю, что и здесь автор скрипта имел в виду то же самое.
Правда, в таком обрамлении pushd/popd скармливаемый команде rd параметр "%delfolder%" я лично заменял на просто точку, {rd /s /q .}
Для очистки единичной папки - можно менять текущий путь командой cd, а popd, вообще говоря, не нужен.
 
Haxtigal

Цитата:
как две команды навесить на одну кнопку?

Если задача стоит именно "очистить две и только две конкретные папки", то проще всего написАть как-то так:

Код:
cd "Folder 1" ||exit
rd /s /q .
cd "Folder 2" ||exit
rd /s /q .
exit

Конструкция "||exit" - чтобы при ошибке перехода в каталог ничего не удалялось, а завершалось выполнение.
Если папок дофига - можно читать список из отдельного файла и звать rd в цикле for.

Всего записей: 3084 | Зарегистр. 12-10-2006 | Отправлено: 11:31 30-09-2025
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BorlandIMHO
Если текущий диск - не тот, на котором "Folder 1", то очистится не тот каталог, который надо. И ошибка перехода в "Folder 1" не означает, что нельзя очистить "Folder 2".

Код:
 
cd /d "Folder 1" && rd /s /q .
cd /d "Folder 2" && rd /s /q .
 


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

Всего записей: 4404 | Зарегистр. 18-04-2005 | Отправлено: 11:49 30-09-2025
DeZz



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

Цитата:
 задаче "очистить папку %TEMP%"

у себя для этого юзаю temp.ps1
ибо не все подряд удаляется, а только старше Х дней

Всего записей: 1382 | Зарегистр. 23-01-2006 | Отправлено: 11:52 30-09-2025
Haxtigal

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BorlandIMHO
Всё верно. Задача была очистить лишь содержимое. Папка TEMP назначена у меня в переменных

Всего записей: 22 | Зарегистр. 23-08-2025 | Отправлено: 13:19 30-09-2025 | Исправлено: Haxtigal, 13:21 30-09-2025
BorlandIMHO

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

Цитата:
Если текущий диск - не тот...

Ну, папку надо просто с полным путём указывать, для уверенности что тот.  
А ||exit у меня не просто так при каждом cd: предпочитаю завершение скрипта при любой "аварии" (обычно, правда, вывожу сообщение об ошибке и прочая громоздкая обработка)...
Ваш вариант - лаконичнее.
 
P.S. А pushd/popd вместо cd /d хороши тем, что позволяют переход в сетевой каталог с автоматическим монтированием/отмонтированием сетевого диска. Это даёт некую универсальность при использовании фрагментов кода в различных сценариях.

Всего записей: 3084 | Зарегистр. 12-10-2006 | Отправлено: 13:59 30-09-2025
GCRaistlin



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

Цитата:
папку надо просто с полным путём указывать, для уверенности что тот.

Не поможет: CD без /D не меняет текущий диск.
 

Цитата:
предпочитаю завершение скрипта при любой "аварии"

Очистка "Folder 1" не зависит от результатов очистки "Folder 2" - так почему же очистка "Folder 2" должна зависеть от результатов очистки "Folder 1"?
И лучше 'exit /b', а не 'exit' - чтобы не закрыть лишнего.

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

Всего записей: 4404 | Зарегистр. 18-04-2005 | Отправлено: 14:13 30-09-2025
Kero1



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

Цитата:
этот Kero1 новее Windows XP ничего

очень в одном месте чешется ? Так ты чешись, чешись, вместо того чтоб по форуму флудить.

Всего записей: 2820 | Зарегистр. 23-08-2011 | Отправлено: 18:35 30-09-2025 | Исправлено: Kero1, 22:33 01-10-2025
BorlandIMHO

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

Цитата:
deltree ... Не верю, что за несколько десятилетий никто такой не написал.

deltree изначально появился в M$DOS 6.0 (1993 год) и закончился в WinMe (2000 год).
В WinNT с самого начала (1993 год) был rmdir (он же rd), и есть до сих пор во всех потомках.
Функционально эти утилиты примерно равнозначны.
Писать замену штатной утилите никому, очевидно, просто не пришло в голову. Но вы вполне можете исправить это упущение.
 
GCRaistlin

Цитата:
CD без /D не меняет текущий диск.

Это да, это я упустил. Вот что значит - практически не использую...
Как уже говорил, мне pushd/popd привычнее.

Цитата:
Очистка ...
... лишнего.

Просто у нас с вами несколько разный подход к разработке...

Всего записей: 3084 | Зарегистр. 12-10-2006 | Отправлено: 21:25 30-09-2025
Kero1



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

Цитата:
просто не пришло в голову.
ахахахах. Вы ошибаетесь, как минимум 5 нашёл. И на 64бит и на грёбаном .нэт.  
github.com/johnmbaughman/deltree
github.com/ai7/toolbox/releases
www.softpedia.com/get/System/File-Management/Delete-Tree.shtml
и ещё всякие разные, даже на джаве.
 

Цитата:
эти утилиты примерно равнозначны.  
они совсем неравнозначны, так как deltree поддерживает * и ?. Хотя в оф документации про это замалчивается. При том лехко и без лишних вопросов и ключей массовое удаление.  В мусорсофте знают как опасны старинные проги, потому делают всё чтоб они не работали. И классическую командную строку пытаются полностью выдавит повершелом на грёбаном фреймворке, хотя пш местами могуч. Кстати, В вэнде11 64быт командная строка и батники  ещё остались, работают полноценно или уже убрали ?                                                        

Всего записей: 2820 | Зарегистр. 23-08-2011 | Отправлено: 22:27 01-10-2025 | Исправлено: Kero1, 22:56 01-10-2025
sakatgg

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть  
Components.reg - полная ветка
list.txt - список манифестов  
В Components.reg надо оставить только записи компонентов, находящихся в списке list.txt
 
Т.е. из списка list.txt берем
 amd64_netfx4-legacy_web_l..rust_config_default_b03f5f7f11d50a3a_4.0.15806.0_none_fef69f35aa5846d8.manifest
 
Оставляем это  

Код:
[HKEY_LOCAL_MACHINE\COMPONENTS\DerivedData\Components\amd64_netfx4-legacy_web_l..rust_config_default_b03f5f7f11d50a3a_4.0.15806.0_none_fef69f35aa5846d8]
"S256H"=hex:83,00,f7,78,a4,77,e3,e8,8d,b5,e6,a1,38,c3,c9,b7,80,a1,fa,9e,25,03,\
  70,16,dd,23,66,af,16,cb,cd,03
"identity"=hex:4e,65,74,46,78,34,2d,6c,65,67,61,63,79,5f,77,65,62,5f,6c,6f,77,\
  74,72,75,73,74,5f,63,6f,6e,66,69,67,5f,64,65,66,61,75,6c,74,2c,20,43,75,6c,\
  74,75,72,65,3d,6e,65,75,74,72,61,6c,2c,20,56,65,72,73,69,6f,6e,3d,34,2e,30,\
  2e,31,35,38,30,36,2e,30,2c,20,50,75,62,6c,69,63,4b,65,79,54,6f,6b,65,6e,3d,\
  62,30,33,66,35,66,37,66,31,31,64,35,30,61,33,61,2c,20,50,72,6f,63,65,73,73,\
  6f,72,41,72,63,68,69,74,65,63,74,75,72,65,3d,61,6d,64,36,34
"c!microsoft-w..-deployment_31bf3856ad364e35_10.0.20348.1_2ca4b71a5d0ef618"=hex:
"f!legacy.web_lowtrust.confi_6d23838a96e5748b"=dword:00000001

 
и далее по списку, остальное из Components.reg удалить. Или Создать другой .reg с компонентами из списка.
 
Components.reg и list.txt здесь
Sample_Components.7z
 
Спасибо
 

Всего записей: 1261 | Зарегистр. 18-11-2006 | Отправлено: 15:27 03-10-2025 | Исправлено: sakatgg, 18:59 03-10-2025
los

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kero1, посмотрите
https://maresware.com/maresware/html/rm.htm

Всего записей: 7957 | Зарегистр. 08-09-2001 | Отправлено: 17:14 03-10-2025
Inoz2000



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sakatgg
Код:
@echo off
CD/D "%~dp0"
SETLOCAL
SET regTest=HKLM\SOFTWARE\MyTodayTest
SET name=File_000
SET "HIVname=%CD%\%name%.hiv"
SET H2=Sample_Components_TMP
reg.exe add %regTest% /ve /f>nul
reg.exe save %regTest% "%HIVname%" /y>nul
reg.exe delete %regTest% /f>nul
reg.exe load HKLM\%H2% %HIVname%>nul
powershell.exe -NoP -NoL -Ep Bp -C (gc "%CD%\Components.reg") -replace 'MACHINE\\COMPONENTS\\','MACHINE\%H2%\'>"%CD%\ComponentsTMP.reg"
reg.exe import "%CD%\ComponentsTMP.reg">nul
for /f "delims=\] tokens=5" %%a in ('reg.exe query HKLM\%H2%\DerivedData\Components /s /f * /k') do findstr /i /c:"%%a" list.txt||reg.exe delete HKEY_LOCAL_MACHINE\%H2%\DerivedData\Components\%%a /f
reg.exe export HKLM\%H2% "%CD%\ComponentsTMP.reg" /y>nul
powershell.exe -NoP -NoL -Ep Bp -C (gc "%CD%\ComponentsTMP.reg") -replace '\\%H2%\\','\COMPONENTS\'>"%CD%\Components_NEW.reg"
del /Q /F ComponentsTMP.reg
reg.exe unload HKLM\%H2%
del /Q /F %name%.*
del /Q /F /A:S %name%.*
pause
Я это вижу так
Через пару минут работы создаётся 'другой .reg с компонентами из списка.'

Всего записей: 5498 | Зарегистр. 23-04-2009 | Отправлено: 17:47 03-10-2025
sakatgg

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

Цитата:
Через пару минут работы создаётся 'другой .reg с компонентами из списка.'

Inoz2000, спасибо большое, всё работает
 
Еще задачка, есть папка С:\Windows\WinSxS\
Надо по поиску, например b03f5f7f11d50a3a, найти все папки и файлы (С:\Windows\WinSxS\Manifests), скопировать их в другое место, сохраняя структуру найденных папок и все файлы внутри. Спасибо
 
Пробовал в Totalcmd, поиск находит -> вывести всё на панель, но он не копирует всё содержимое найденной папки.

Всего записей: 1261 | Зарегистр. 18-11-2006 | Отправлено: 19:02 03-10-2025 | Исправлено: sakatgg, 19:15 03-10-2025
Haxtigal

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть камера Defender. Она не задействована, однако микрофон "пишет". Лазить в Параметры-Звук-Управление звуковыми устройствами-Устройства ввода-Микрофон каждый раз геморно. Можно создать батник на рабочем столе, очень желательно меняющийся (по подобию Корзины) вкл/выкл?

Всего записей: 22 | Зарегистр. 23-08-2025 | Отправлено: 07:47 04-10-2025
Inoz2000



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

Всего записей: 5498 | Зарегистр. 23-04-2009 | Отправлено: 09:05 04-10-2025
Haxtigal

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Inoz2000
Ни-ни-ни! Пройденный этап. После его "применения" отключение микрофона по вышеуказанному пути
Параметры-Звук-Управление звуковыми... не происходит. Оживление путём перезагрузки. Да и тормознутая приблуда не в меру

Всего записей: 22 | Зарегистр. 23-08-2025 | Отправлено: 09:35 04-10-2025
Открыть новую тему     Написать ответ в эту тему

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

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


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru