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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd)

Модерирует : gyra, Maz

Maz (19-09-2020 13:36): Командная строка, батники, сценарии (bat, cmd) Часть 6  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 188 189 190 191 192 193 194 195 196 197 198 199

   

cchameleone



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

Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!! Чтобы не копировались концевые пробелы из форума, жмите на ссылку "Редактировать" в посте, и уже из редактора копируйте батник без пробелов.
 
Примечание: Большие куски кода заключайте в тэг [ 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 (PDF). Курс лекций для начинающих
· Бокалий В. Командная строка (pdf-брошюрка в 20 страниц)
· Александров А., Дибров А. Урок bat-аники (pdf)
· Уильям Р. Станек - Командная строка Windows. Справочник администратора
 
· Скрываем консольные окна, Выполнение BAT-скриптов без вызова окна консоли
· cmdow — изменение параметров и видимости дос-окна, Статья в КОМПЬЮТЕРРАONLINE
· Набор GNU утилит для win32
· HS_Packet.7z - Пакет утилит для организации интерфейса в bat-файлах
· Использование ansi.sys
· blat — отправка почты из консоли
· Команды RunDll32
· Quick Batch File Compiler - Позволяет превратить ваш батник в независимое приложение
· Easy Batch Builder+Rus+Crack - Редактор BAT файлов.Через графический интерфейс программы вы сможете быстро конструировать пакетные файлы практически любой сложности. (В комплекте есть Лоадер созданный с помощью Sign Of Misery некоторые антивирусы обзывают его вирусом. Вам решать: ставить или не ставить) (ЗЕРКАЛО)
· Простой способ получать текущую дату всегда в одном формате (не зависит от языков и настроек) ещё и ещё
· Переход из 32-битной версии cmd.exe в 64-битную (1) (2)(3)

Всего записей: 2279 | Зарегистр. 16-10-2015 | Отправлено: 09:22 29-04-2016 | Исправлено: Maz, 08:47 26-03-2020
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kot1313
Я же дал. Кладите куда хотите и запускайте. Просто надо различать папку скрипта и текущую (рабочую) папку - они могут и совпадать, и не совпадать. Если запускаете из Проводника, совпадут, а вот если из консоли - могут и не:

Код:
 
cd C:\TargetDir
C:\ScriptDir\DelSubdirs.cmd
 

В этом случае текущей папкой будет C:\TargetDir, а не C:\ScriptDir, и, соответственно, в ней-то и будут удаляться подпапки.

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

Всего записей: 3991 | Зарегистр. 18-04-2005 | Отправлено: 00:15 27-02-2019
kot1313



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GCRaistlin
Я просто создаю файл Del.cmd.  
Копирую туда Ваш код
Код:
for /d %%A in (*) do rd /s /q "%%A"
и сохраняю файл.
Ложу Del.cmd в материнскую папку, где мне нужно удалить подпапки, не удаляя файлов. Запускаю  Del.cmd
В материнской папке подпапки с содержимым удаляются, файлы в корне материнской папки остаются.
Я правильно всё понял ?
 
Добавлено:
PS  
1. Проверил - создал 25000 пустых папок и тут же их удалил - за 3 секунды !
Тока во время выполнения в окне cmd скролится показ удаления этих подпапок.
2. Содал папку с 50000 файлами размером 3 килобайта. Проводник при отоброжении папки завис, видать mft замаялся читать    
Поместил эту папку в материнскую. Ваш cmd убил её за 10 секунд !
Просто идеальный инструмент !
 
А можно сделать так, чтоб процесс работы cmd проходил тихо, и тока по окончании сообщалось,  
что операция выполнена за такое-то время ?
 
И можно сделать код для cmd с обратным функционалом -  
удалять все файлы в корне материнской папки, не трогая подпапки ?
 
Спасибо Вам за подсказки !

Всего записей: 2522 | Зарегистр. 11-12-2002 | Отправлено: 01:17 27-02-2019 | Исправлено: kot1313, 01:42 27-02-2019
GCRaistlin



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

Цитата:
можно сделать так, чтоб процесс проходил тихо, и тока по окончании сообщалось,  
что операция выполнена за такое-то время ?

Подробнее...
Если вручную запускать будете, то pause в начале строго рекомендуется - батник опасный.
 
Добавлено:
kot1313

Цитата:
удалять все файлы в корне материнской папки, не трогая подпапки


Код:
 
del /q *
 

 
Добавлено:
Но, понятное дело, если текущая папка совпадает с папкой скрипта, запустить его удастся только однажды. Хотя можно пометить read-only.

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

Всего записей: 3991 | Зарегистр. 18-04-2005 | Отправлено: 01:48 27-02-2019
kot1313



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

Код:
del /q *
 
Ну я не успел прочитать пункт про только чтение  
И файл cmd самоубился    
Буду внимателен, да и запускать буду тока в виде файла cmd.
(к командной строке исчо с 1991 (DOS-Win3.11-Win98SE-WinXP-Win7SP1) я так и не привык - ну не моё это)
 
И последний вопрос, с которого и началось моё исследование.
Каким способом Вы пользуетесь чтобы удалить огромное колличество маленьких файлов\папок ?
Например набор дров, как у меня; папка Temp на особо запущенных системах; последствия "деятелности" некоторых вирусв -  
Когда есть десятки, а то и сотни тысяч файлов и папок, которые нужно удалить, не перегружаясь в WinPE.
Windows Explorer, TotalCommander, Far удаляют ооочень медленно.
Я прав, что вариант убиения файлов с помощью cmd самый быстрый ?

Всего записей: 2522 | Зарегистр. 11-12-2002 | Отправлено: 02:59 27-02-2019 | Исправлено: kot1313, 03:00 27-02-2019
GCRaistlin



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

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

Регулярно такой задачи не возникает, а разово - без разницы.

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

Всего записей: 3991 | Зарегистр. 18-04-2005 | Отправлено: 03:05 27-02-2019
Jonmey

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

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

Если много и маленьких, то можно, например, удалить винраром - создать архив без сжатия с  удалением файлов. Останется удалить только один файл (сам архив). На 100 тыс. файлов требуется несколько сек.

Всего записей: 1319 | Зарегистр. 17-01-2011 | Отправлено: 06:11 27-02-2019
legionpheonix



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

Код:
 
@echo off
start "" %~dp0\program\program.exe -file %~dp0\plugins\plugin1.xml -file %~dp0\plugins\plugin2.xml
 

сделать вот такой?

Код:
 
@echo off
start "" %~dp0\program.exe
 
-file %~dp0\plugins\plugin1.xml
-file %~dp0\plugins\plugin2.xml
 

Чисто визуально нужно, чтобы удобно было видно запуск каждого параметра по порядку.

Всего записей: 266 | Зарегистр. 23-02-2012 | Отправлено: 18:32 27-02-2019 | Исправлено: legionpheonix, 18:33 27-02-2019
Inoz2000



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
legionpheonix
Цитата:
Чисто визуально нужно, чтобы удобно было видно
месяц назад было

----------
Мы все умрём. (-:

Всего записей: 4905 | Зарегистр. 23-04-2009 | Отправлено: 18:40 27-02-2019
RetroRocket



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

Код:
set S1=-file "%~dp0plugins\plugin1.xml"
set S2=-file "%~dp0plugins\plugin2.xml"
 
start "" %~dp0program.exe %S1% %S2%


----------
"... Зовёт, зовёт в дорогу далёкий Млечный Путь ..."

Всего записей: 2685 | Зарегистр. 02-01-2018 | Отправлено: 18:47 27-02-2019 | Исправлено: RetroRocket, 19:09 27-02-2019
Inoz2000



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
кстати, %~dp0 само по себе оканчивается на \

----------
Мы все умрём. (-:

Всего записей: 4905 | Зарегистр. 23-04-2009 | Отправлено: 18:52 27-02-2019
legionpheonix



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
@Stone_01
Спасибо большое.
 
Добавлено:
@RetroRocket
О спасибо вам большое. Наконец-то хоть кто-то показал именно пример нормальный.
Видел в гугле поиске варианты set с любым значением и = с параметром. Но никто нормально описать сам пример не мог.

Всего записей: 266 | Зарегистр. 23-02-2012 | Отправлено: 19:09 27-02-2019
Sisin



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

Цитата:
сделать вот такой?

 
Вот пример из другой темы: http://forum.ru-board.com/topic.cgi?forum=5&topic=12558&start=1880#3

Всего записей: 996 | Зарегистр. 07-05-2010 | Отправлено: 20:21 27-02-2019
diminick

Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Здравствуйте. Не знаю в какой теме правильнее будет спросить, посоветовали спросить здесь.
Хочу понять как работает перенаправление ввода-вывода в командной строке (использование конструкций с использованием дескриптора, "<&" и ">&"). Читал несколько источников в интернете, но не смог прийти к окончательному пониманию.
Прошу подсказать хороший источник информации по этому вопросу.
Или просто пояснить работу следующего примера, работу которого у меня не получается понять. Беру команду "dir /k" (несуществующий ключ "k" указан умышленно). При выполнении строк "dir /k >result.txt 2>&1" и "dir /k >result.txt 2<&1" получается один и тот же итог, сообщение о неверном ключе "k" пишется в файл "result.txt". Не получается понять, почему результат выполнения этих строк одинаков?!

Всего записей: 29 | Зарегистр. 22-02-2009 | Отправлено: 15:51 02-03-2019
YuS_2



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

Цитата:
Не получается понять, почему результат выполнения этих строк одинаков?!

Просвещайтесь:
Использование операторов перенаправления команд

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 17:09 02-03-2019
diminick

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

Цитата:
Просвещайтесь:
Использование операторов перенаправления команд

 
Там просто скопирован текст, который я уже не раз читал на ряде сайтов.
Вот, в моем примере в первом варианте строки команды дескриптор 1 перенаправляется в файл "result.txt", а дескриптор 2 перенаправляется в дескриптор 1, который ранее был перенаправлен в файл, здесь получаемый итог понятен. Но во втором варианте строки команды продублированный дескриптор 1 перенаправляется в дескриптор 2, почему сообщение об ошибке (которое, по идее, пишется в дескриптор 2) записывается в файл, хотя в файл был перенаправлен дескриптор 1 ?!

Всего записей: 29 | Зарегистр. 22-02-2009 | Отправлено: 05:25 03-03-2019
toshanNEW



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не подскажите по jq, имеется такой .json:

Код:
 
{
    "1": {
        "2": {
            "abc": "test"
            }
        }
}
 

необходимо заменить "test" на "new test"

Всего записей: 65 | Зарегистр. 20-09-2005 | Отправлено: 10:02 20-03-2019
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброе время, toshanNEW
Зависит от того, что Вы хотите:
jq ".\"1\".\"2\".abc = \"new test\"" in.json
jq "(.\"1\".\"2\" | select (.abc==\"test\"))|= (.abc=\"new test\")" in.json
jq "(.\"1\".\"2\" | select (try .abc |  startswith(\"test\")))|= (.abc=\"new test\")" in.json

Всего записей: 1891 | Зарегистр. 07-08-2002 | Отправлено: 11:24 20-03-2019
Pasha_ZZZ



Запрет на пост
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
toshanNEW
Если на самом деле там не 1 и 2, а что-то с буквами - то можно еще так
Цитата:
jq ".x1.x2.abc=""new test"""""

Всего записей: 12398 | Зарегистр. 11-03-2002 | Отправлено: 11:31 20-03-2019
toshanNEW



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Pasha_ZZZ
Спасибо. У меня на самом деле примерно такой json:

Код:
 
{"Printer Settings":{"elements":{"Directory Settings":{"elements":{"DIRECTORY":{"default":"c:\\test\\"}}}}},"params":{"DIRECTORY": "c:\\test\\"}}
 

Как в одну команду объединить внесение двух изменений:

Код:
 
jq-win32.exe --compact-output ".\"params\".\"DIRECTORY\"=\"c:\\new test\\\\"" m.json>mE.json
jq-win32.exe --compact-output ".\"Printer Settings\".\"elements\".\"Directory Settings\".\"elements\".\"DIRECTORY\".\"default\"=\"c:\\new test\\\\"" mE.json>mEE.json
 

 
Ещё обнаружил, но не знаю, на сколько это существенно, что после выполнения в конце файла дописывается перевод строки (0x0D 0x0A)...

Всего записей: 65 | Зарегистр. 20-09-2005 | Отправлено: 13:18 21-03-2019
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброе время, toshanNEW
jq -jc "(.params.DIRECTORY, .\"Printer Settings\".elements.\"Directory Settings\".elements.DIRECTORY.default)|= \"c:\\new test\\\\\"" m.json

Всего записей: 1891 | Зарегистр. 07-08-2002 | Отправлено: 13:49 21-03-2019 | Исправлено: Alex_Piggy, 13:52 21-03-2019
   

Страницы: 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 188 189 190 191 192 193 194 195 196 197 198 199

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd)
Maz (19-09-2020 13:36): Командная строка, батники, сценарии (bat, cmd) Часть 6


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru