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

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

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

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

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



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

Цитата:
Добавлено:
Значит переименовывать.

Видимо, Вы правы.
Мой батник работает. Только, что проверил. Буду переименовывать архив. Возможно, включу в имя архива и время создания.  

Всего записей: 537 | Зарегистр. 17-08-2006 | Отправлено: 17:32 14-08-2024 | Исправлено: VDVolkov, 17:33 14-08-2024
GCRaistlin



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

Цитата:
Не взлетает

Полагаю, пробуете из Far. Из сеанса cmd нормально разворачивается.

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

Всего записей: 4226 | Зарегистр. 18-04-2005 | Отправлено: 17:40 14-08-2024
xrun1



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

Цитата:
включу в имя архива и время создания


Код:
for /f "tokens=1 delims=." %%i In ('WMIC OS Get LocalDateTime^|Find "."') Do Set DateTime=%%i
set "DateTime=%DateTime:~6,2%.%DateTime:~4,2%_%DateTime:~8,2%-%DateTime:~10,2%"
 

UPD. Год пропустил, разберётесь.

Всего записей: 908 | Зарегистр. 26-12-2009 | Отправлено: 17:45 14-08-2024 | Исправлено: xrun1, 17:47 14-08-2024
VDVolkov



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

Цитата:
Полагаю, пробуете из Far. Из сеанса cmd нормально разворачивается.

Да, из Far ...
 
xrun1

Цитата:

Код:
for /f "tokens=1 delims=." %%i In ('WMIC OS Get LocalDateTime^|Find "."') Do Set DateTime=%%i
set "DateTime=%DateTime:~6,2%.%DateTime:~4,2%_%DateTime:~8,2%-%DateTime:~10,2%"

Спасибо. Красиво. Но для меня очень сложно.  
Однако, сохраню.
Закончу проект по архивизу и попробую вникнуть.
Пока сделал так:

Код:
pkzipc.exe -add -dir=relative all.zip *.*
set a=%date%
set t=%time%
ren file.zip file_%a:~0,2%%a:~3,2%%a:~8,2%_%t:~0,2%%t:~3,2%%t:~6,2%.zip

 

Всего записей: 537 | Зарегистр. 17-08-2006 | Отправлено: 17:57 14-08-2024 | Исправлено: VDVolkov, 18:16 14-08-2024
GCRaistlin



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

Цитата:
Спасибо. Красиво.

Сложно - еще не значит красиво. В данном случае, кроме тормозов и повышения требований к окружению, все эти навороты с WMIC и FIND ничего не дают.
 

Цитата:
Сделал так

А почему не так:

Код:
 
set a=%date%
set t=%time%
%farhome%\user\pack\pkzipc\pkzipc.exe -add file_%a:~0,2%%a:~3,2%%a:~8,2%_%t:~0,2%%t:~3,2%%t:~6,2%.zip *.*
 

?

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

Всего записей: 4226 | Зарегистр. 18-04-2005 | Отправлено: 18:04 14-08-2024
VDVolkov



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

Цитата:
А почему не так:

Потому, что эта не моя тема (командная строка) и мои знания в ней достаточно ущербны, и я это понимаю.
Подробнее...  
P.S. Аппетит приходит во время еды. Можно как-то вставить имя каталога, который архивирую?

Код:
pkzipc.exe -add -dir=relative all.zip *.*
set a=%date%
set t=%time%
ren all.zip имя каталога_%a:~0,2%%a:~3,2%%a:~8,2%_%t:~0,2%%t:~3,2%%t:~6,2%.zip
 

Всего записей: 537 | Зарегистр. 17-08-2006 | Отправлено: 18:14 14-08-2024 | Исправлено: VDVolkov, 18:30 14-08-2024
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VDVolkov
Так результат-то один и тот же. Только меньше узких мест у алгоритма, и работает быстрее.

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

Всего записей: 4226 | Зарегистр. 18-04-2005 | Отправлено: 18:24 14-08-2024
VDVolkov



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

Цитата:
Так результат-то один и тот же. Только меньше узких мест у алгоритма, и работает быстрее.

Спасибо, понял, и уже переставил строки.
Может быть, если не очень сложно, подскажете как вставить имя каталога, который архивирую?
 
Код:
set a=%date%
set t=%time%
pkzipc.exe -add -dir=relative all.zip *.*
ren all.zip имя каталога_%a:~0,2%%a:~3,2%%a:~8,2%_%t:~0,2%%t:~3,2%%t:~6,2%.zip

Всего записей: 537 | Зарегистр. 17-08-2006 | Отправлено: 18:28 14-08-2024 | Исправлено: VDVolkov, 18:35 14-08-2024
GCRaistlin



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

Цитата:
Да, понял, и уже переставил строки.

Смысл не в том, чтобы переставить строки, а в том, чтобы убрать ненужный шаг - переименование. Это узкое место: file.zip (all.zip) может уже существовать, и результат выполнения батника будет отличаться от того, что вы хотели получить.
Да и вообще - вы создаете архив там же, где находятся ваши файлы; в следующий раз - в новый архив - будет добавлен предыдущий, и т. д., как снежный ком. Нужно это изменить, а уж потом решать вопрос:

Цитата:
как вставить имя каталога, который архивирую



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

Всего записей: 4226 | Зарегистр. 18-04-2005 | Отправлено: 18:35 14-08-2024
VDVolkov



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

Цитата:
Да и вообще - вы создаете архив там же, где находятся ваши файлы; в следующий раз - в новый архив - будет добавлен предыдущий, и т. д., как снежный ком. Нужно это изменить, а уж потом решать вопрос:

Это же не весь файл. Далее следует команда move и перенос файла *.zip (имя файла не важно) на другой сервер, где уже создан соответствующий проекту каталог. Там для меня все понятно. Я прошу помочь только в том, чего не понимаю как сделать. И с именем каталога - это ведь просто просьба ...

Всего записей: 537 | Зарегистр. 17-08-2006 | Отправлено: 18:43 14-08-2024 | Исправлено: VDVolkov, 18:45 14-08-2024
BorlandIMHO

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

Цитата:
как вставить имя каталога, который архивирую?

Вы уже задачу в целом озвучьте: что есть, что требуется в результате... Человекопонятным языком.
Так-то - резервное копирование скриптом до вас 100500 сисадминов делали, и после вас  ещё не меньше будут делать...
В общем и целом, cmd-скрипт может подставлять значения своих переменных для большинства команд, которые он вызывает. Вместо практически любых параметров. Но хотите готовое решение - дайте полную задачу...

Всего записей: 2913 | Зарегистр. 12-10-2006 | Отправлено: 22:11 14-08-2024
GCRaistlin



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

Код:
 
set a=%date%
set t=%time%
set "Dir=%cd:*\=%"
if not defined Dir (
  echo Error! Launched from the root directory.
  exit /b 1
)
:Loop
set "Dir=%Dir:*\=%"
if "%Dir:\=%" neq "%Dir%" goto :Loop
set "ArcName=%Dir%_%a:~0,2%%a:~3,2%%a:~8,2%_%t:~0,2%%t:~3,2%%t:~6,2%.zip"
pkzipc.exe -add -dir=relative "%ArcName%" *.*
 


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

Всего записей: 4226 | Зарегистр. 18-04-2005 | Отправлено: 00:03 15-08-2024
xrun1



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

Цитата:
В данном случае, кроме тормозов и повышения требований к окружению, все эти навороты с WMIC и FIND ничего не дают.

Вроде, давно в теме. Это обсуждалось. Не в укор, просто Вы забыли, а я пользуюсь, поэтому помню.
wmic позволяет получить дату/время, которые не зависят от установок пользователя. У меня в компьютере установлена дата в формате dd.mm.yy ddd и командой
echo %date:~0,2%%date:~3,2%%date:~8,2%
получу
1508 Ч
Если дата (день) 1..9 или время 1..9 (часы) вместо 0 (ноль) можем получить пробел.
Правильно получить дату и время в формате DDMMYYY_HHMMSS будет так:

Код:
for /f "tokens=1 delims=." %%i In ('WMIC OS Get LocalDateTime^|Find "."') do set DateTime=%%i
set "DateTime=%DateTime:~6,2%%DateTime:~4,2%%DateTime:~0,4%_%DateTime:~8,2%%DateTime:~10,2%%DateTime:~12,2%"

А в остальном, Ваш скрипт верный. Ни добавить, ни убавить.

Всего записей: 908 | Зарегистр. 26-12-2009 | Отправлено: 02:26 15-08-2024
VDVolkov



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GCRaistlin
Подробнее...
Большое человеческое спасибо.  
Дописал move /Y "%ArcName%" и указал путь. Ключик /Y, видимо, лишний, так как имя архива уникально. Теперь нет необходимости заранее создавать соответствующие проекту каталоги. Имя проекта присутствует в имени архива.  
Все работает, так как надо.
P.S. Проверил работу файла в конторе на сервере с запуском файла из планировщика заданий: файл отработал четко.
Уважаемый GCRaistlin! СПАСИБО !!!

Всего записей: 537 | Зарегистр. 17-08-2006 | Отправлено: 05:12 15-08-2024 | Исправлено: VDVolkov, 13:21 15-08-2024
www_world

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Мне так больше нравится с ps
powershell get-date -format "{yyyy-MMM-dd_HH.mm}"
2024-авг-14_12.06
powershell get-date -format "{yyyymmdd_HHmm}"
20245614_1156
в батнике

Код:
...
for /f "tokens=*" %%a in ('powershell get-date -format "{yyyymmdd_HHmm}"') do set name=%%a
...

или использовать makecab (есть в каждой вин нт системе) или rar (в т.ч. для создания zip архивов), поскольку оба позволяют ввод форматированной даты и времени напрямую в имена файлов без предварительного получения их из системы.
То есть, весь аналогичный батник превращается, фактически, в одну единственную строку.

Всего записей: 504 | Зарегистр. 04-11-2018 | Отправлено: 05:14 15-08-2024 | Исправлено: www_world, 05:27 15-08-2024
FiLinX



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

Код:
goodbyedpi.exe -9 -e 1 --blacklist russia-youtube.txt

а это второй:

Код:
@ECHO OFF
echo This script should be run with administrator privileges.
echo Right click - run as administrator.
echo Press any key if you're running it as administrator.
pause
sc stop "GoodbyeDPI"
sc delete "GoodbyeDPI"
sc stop "WinDivert"
sc delete "WinDivert"

вот хотелось бы кликами по одному единственному ярлыку - и запускать и ремувить)
ещё б конечно бы намудрить, чтоб созданное консольное окно от первогобатника сразу само бы сворачивалось в трей ))
а, и наверно лучше бы вообще убрать те эхи администраторства, я и так он

Всего записей: 2669 | Зарегистр. 05-05-2010 | Отправлено: 14:08 16-08-2024 | Исправлено: FiLinX, 14:08 16-08-2024
metatrop

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
FiLinX
Можно выполнить sc query GoodbyeDPI, разобрать его строки вывода, и, если служба не обнаружена или в состоянии STOPPED, запускать первый блок кода. В противном случае - второй блок, который убирает службы.
 
(Если непонятно, как вывод разбирать, см. imdq.cmd в "большом архиве" в шапке, там принцип аналогичный.)

Всего записей: 332 | Зарегистр. 17-09-2010 | Отправлено: 14:52 16-08-2024
GCRaistlin



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

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

Запускайте его через Task Scheduler. Не забудьте убрать галку "Stop the task if it runs longer than".

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

Всего записей: 4226 | Зарегистр. 18-04-2005 | Отправлено: 15:00 16-08-2024
FiLinX



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GCRaistlin
Цитата:
Запускайте его через Task Scheduler

вот с этим я недопонимаю..
ну, а как?  ведь планировщиком же вроде только авто-запуск назначается  -  но мне ж именно чтоб вручную включать-отключать надо)  так то я могу просто инсталлировать драйвер как службу на постоянку, но мне это ненадо..
командами бы в трей консольку зарулить как)
 
Добавлено:
metatrop
Цитата:
см. imdq.cmd в "большом архиве" в шапке

а не укажете ссылкой на этот "большой архив" ?  )
 
Добавлено:
аа, всё, разобрался.. в шапке под последним абзацем "Большой сборник одним архивом"
просто под ней стоит ссылка-сокращатор - https://clck.ru/CHe73
ну и у меня оно почему то глючит  -  я кликаю, появляется на долю секунды новая вкладка и тут же пропадает..  но где-то после 15-го тыка - вывалилось яндексовое окно с капчей, и только после получил даунлод)
нашёл там и вынул этот imdq.cmd  -  но заглянув в него мой энтуазизм обнулился(  я к такому не подготовлен)

Всего записей: 2669 | Зарегистр. 05-05-2010 | Отправлено: 17:09 16-08-2024
GCRaistlin



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

Цитата:
мне ж именно чтоб вручную включать-отключать надо

Если отключать действительно надо, то Планировщик не подойдет. Но - надо ли?

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

Всего записей: 4226 | Зарегистр. 18-04-2005 | Отправлено: 19:13 16-08-2024
Открыть новую тему     Написать ответ в эту тему

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

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