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

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

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

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

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



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

Цитата:
но и вообще любые разделители: ;,=

ну, да, я их всех в спецсимволы "записала", хотя, строго говоря, = спецсимволом не является вроде бы

Цитата:
еще и единственный способ полностью отменить пропуск комментариев

а если вообще не указывать EOL, разве что-то пропускается в качестве комментариев?
я была уверена, что тогда читает все строки подряд
 
и еще вопрос: такой синтаксис применим к ключам только в этой команде, или с другими можно аналогично?

Всего записей: 364 | Зарегистр. 27-02-2006 | Отправлено: 22:54 24-01-2025
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SelenaNight
; - символ комментария по умолчанию.
 

Цитата:
такой синтаксис применим к ключам только в этой команде, или с другими можно аналогично?

Нет, только в FOR. Это особенная команда, читается интерпретатором дважды (почему там и %%: чтобы при первом проходе превратиться в %).
 
https://ss64.com/forum/for-f.html
https://www.dostips.com/forum/viewtopic.php?f=3&t=6156&hilit=for+eol#p39012
https://www.dostips.com/forum/viewtopic.php?f=3&t=2033&hilit=for+eol#p9026
https://www.dostips.com/forum/viewtopic.php?f=3&t=2385&hilit=for+eol#p10729

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

Всего записей: 4417 | Зарегистр. 18-04-2005 | Отправлено: 01:07 25-01-2025
qonyx

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
файлы копируются или перемещаются в папку стандартным методом copy или move. Но бывает так что в папке в которую копируются файлы уже есть файл с таким именем и он перезаписывается или вопрос выдаёт о перезаписи. Как сделать так, чтоб если файйл с с таким именем уже есть, то новый файл копировался без запросов и просто например добавлял к имени нового файла число или индекс или любой разный набор символов, в принципе это неважно ?
 
Чем можно поменять массово атрибуты фалов такие как I, А, например удалить их ?
( чтоб работало на виндовс XP).

Всего записей: 133 | Зарегистр. 16-04-2024 | Отправлено: 22:22 02-02-2025
GCRaistlin



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

Цитата:
Как сделать так, чтоб если файйл с с таким именем уже есть

Проверять существование файла перед копированием и, если есть, изменять целевое имя по нужному алгоритму.

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

Всего записей: 4417 | Зарегистр. 18-04-2005 | Отправлено: 22:31 02-02-2025
SyntaX87



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

Код:
@echo off
setlocal enabledelayedexpansion
 
:menu
echo.
echo ==============================
echo yt-dlp Batch Script
echo ==============================
echo 1. Скачать видео 480
echo 2. Скачать видео 720
echo 3. Скачать видео 1080
echo 4. Скачать аудио
echo 5. Скачать плейлист
echo 6. Выход
echo ==============================
set /p choice="Выберите опцию (1-6): "
 
if "%choice%"=="1" goto download_video
if "%choice%"=="2" goto download_video2
if "%choice%"=="3" goto download_video3
if "%choice%"=="4" goto download_audio
if "%choice%"=="5" goto download_playlist
if "%choice%"=="6" goto exit
 
echo Неверный выбор, попробуйте снова.
goto menu
 
ownload_video
set /p url="Введите URL видео: "
yt-dlp_x86 -S res:480,fps,+codec:avc:m4a "!url!"  
goto menu
 
ownload_video2
set /p url="Введите URL видео: "
yt-dlp_x86 -S res:720,fps,+codec:avc:m4a "!url!"  
goto menu
 
ownload_video3
set /p url="Введите URL видео: "
yt-dlp_x86 -S res:1080,fps,+codec:avc:m4a "!url!"  
goto menu
 
ownload_audio
set /p url="Введите URL аудио: "
yt-dlp_x86 -x --audio-format mp3 "!url!"
goto menu
 
ownload_playlist
set /p url="Введите URL плейлиста: "
yt-dlp -f best -o "%%(playlist_index)s - %%(title)s.%%(ext)s" "!url!"
goto menu
 
:exit
echo Выход...
exit
 

Сохранять в OEM-кодировке.

Всего записей: 101 | Зарегистр. 15-07-2011 | Отправлено: 13:27 03-02-2025
virjokk



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
qonyx
Если в целевой папке файл существует, к его имени добавляется текущие дата и время:
Код:
set "src=c:\исходная папка"
set "dest=c:\целевая папка"
set "add=_%date: =%_%time:~0,2%%time:~3,2%%time:~6,2%"
for %%a in (%src%\*) do (
   if exist "%dest%\%%~nxa" (
      copy "%%a" "%dest%\%%~na%add%%%~xa"
   ) else (  
      copy "%%a" "%dest%"
   )
)

Добавлять к имени цифры в порядке возрастания тоже можно, но это сложнее

Цитата:
Чем можно поменять массово атрибуты фалов такие как I, А, например удалить их ?

Код:
attrib -a -i *.*


Всего записей: 502 | Зарегистр. 19-05-2006 | Отправлено: 20:41 03-02-2025
qonyx

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

Цитата:
attrib -a -i *.*  
-а работает, а Недопустимый ключ - "-i". Это на xp, в новых виндах добавили i ?

Всего записей: 133 | Зарегистр. 16-04-2024 | Отправлено: 23:11 03-02-2025
BorlandIMHO

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

Цитата:
в новых виндах добавили i ?

Ещё в 7-ке (хелп от 10 22h2, идентично в 11 24h2): attrib /?, (хелп от 7): attrib /?
(может даже и в висте, но её под рукой нет чтоб проверить).

Всего записей: 3096 | Зарегистр. 12-10-2006 | Отправлено: 23:53 03-02-2025 | Исправлено: BorlandIMHO, 23:58 03-02-2025
DeZz



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Когда то, был BAT-ник удаляющий историю подключенных флешек. Поделитесь плез.

Всего записей: 1386 | Зарегистр. 23-01-2006 | Отправлено: 10:18 04-02-2025
351878



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DeZz reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2" /f

Всего записей: 1316 | Зарегистр. 28-03-2016 | Отправлено: 20:50 04-02-2025
DeZz



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
351878
судя по всему, это все-все usb (клавы, мышки), а не только флешки
 
надо будет затестить, ибо после того же USBOblivion потом что то может не работать

Всего записей: 1386 | Зарегистр. 23-01-2006 | Отправлено: 11:33 05-02-2025
Isorkin

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

Код:
 
powershell -windowstyle hidden -command "Start-Process cmd -ArgumentList '/c takeown /f \"%1\" && icacls \"%1\" /grant *S-1-3-4:F /t /c /l & pause' -Verb runAs"
 

 
Такой вариант не хочет работать:

Код:
 
reg.exe add "HKCR\*\shell\TakeOwnership\command" /ve /t REG_SZ /d "\"powershell -windowstyle hidden -command \"Start-Process cmd -ArgumentList '/c takeown /f \\\"%1\\\" && icacls \\\"%1\\\" /grant *S-1-3-4:F /t /c /l & pause' -Verb runAs\"\"" /f
 

 
Как через cmd определить разделы расположенные в HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Diagnostics\DiagTrack\Tenants\P-ARIA, чтобы потом добавить в них нужные параметры?

Всего записей: 257 | Зарегистр. 06-08-2004 | Отправлено: 19:46 05-02-2025
virjokk



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

Цитата:
Как через cmd определить разделы расположенные в HKLM

Код:
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Diagnostics\DiagTrack\Tenants\P-ARIA"

Всего записей: 502 | Зарегистр. 19-05-2006 | Отправлено: 20:07 05-02-2025 | Исправлено: virjokk, 20:09 05-02-2025
VV189



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Такая проблема - при drag&drop на батник файла в пути которого есть "&" путь режется и не до конца понятно как его полностью получить без танцев с бубном.
 
Пример:

Код:
@echo off
SETLOCAL EnableDelayedExpansion
echo !cmdcmdline!
set "Args=%~1"
if not DEFINED Args (echo No Args &pause>null & exit)
echo %Args%
echo !Args!
pause

 
Дропаю файл "X:\Dir&Name\file.txt", вывод консоли:  

Код:
C:\Windows\system32\cmd.exe /c ""X:\target.cmd" X:\Dir&Name\file.txt"
X:\Dir
X:\Dir
Для продолжения нажмите любую клавишу . . .

 
 

Всего записей: 556 | Зарегистр. 10-09-2006 | Отправлено: 02:26 07-02-2025
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VV189
До батника эта часть строки даже не доходит - см. в cmd /? про убирание кавычек. Дропайте так, чтобы параметр окавыченным передавался.
 
После включения delayed expansion не стоит раскрывать переменные по %. Т. е. нужно сначала присвоить значение Args, а уже потом включать DE.

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

Всего записей: 4417 | Зарегистр. 18-04-2005 | Отправлено: 02:41 07-02-2025
VV189



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

Цитата:
До батника эта часть строки даже не доходит

!cmdcmdline! это команда внутри батника и она выводит все корректно, что видно в примере вывода

Цитата:
Дропайте так, чтобы параметр окавыченным передавался

Это как-то мышку хитро надо держать?

Всего записей: 556 | Зарегистр. 10-09-2006 | Отправлено: 02:55 07-02-2025
GCRaistlin



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

Цитата:
%CMDCMDLINE% - expands to the original command line that invoked the Command Processor.

Понимаете, да? "... Которая вызвала командный процессор". А не батник.

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

Всего записей: 4417 | Зарегистр. 18-04-2005 | Отправлено: 03:27 07-02-2025
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Можно получать аргументы батника парся значение cmdcmdline:

Код:
 
SETLOCAL EnableDelayedExpansion
for /f delims^=^"^ tokens^=2* %%A in ("!cmdcmdline!") do (
  endlocal
  for /f tokens^=* %%C in ("%%B") do set Args=%%C
)
setlocal enabledelayedexpansion
set Args=!Args:~,-1!
echo !Args!
pause
 


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

Всего записей: 4417 | Зарегистр. 18-04-2005 | Отправлено: 15:21 07-02-2025
VV189



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

Цитата:
Можно получать аргументы батника парся значение cmdcmdline

Предполагал что-то такое, спасибо!

Всего записей: 556 | Зарегистр. 10-09-2006 | Отправлено: 21:59 07-02-2025
tmpl

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Можно ли сделать батник, который запустит команду типа ping 8.8.8.8, а после ее выполнения в командной строке будет набрана эта же команда с курсором после нее (чтобы после нажатия Ентер можно было ее снова запустить)?
 
Интересует для Win7.

Всего записей: 1595 | Зарегистр. 22-03-2008 | Отправлено: 01:21 08-02-2025 | Исправлено: tmpl, 01:22 08-02-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 48

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