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

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

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



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

Цитата:
или если нужно выполнить батник для определённой папки, можно перетащить папку на батник:
 
@If not %1.==. If exist "%~1\" for /F "Tokens=*" %%A in ('dir "%~1" /A-D /S /B') do @type nul >"%%A"
 
либо тоже самое:
 
@If not %1.==. If exist "%~1\" for /r %1 %%A in (*) do @type nul >"%%A"  

A27
Работает, но с одим исключением - файлы с атрибутом скрытый или тока чтение - не обрабатывает.  
 
Добавлено:

Цитата:
Тогда строку del уберите и скобки тоже не нужны. Проще говоря, в одну строку:
 
@for /F "Tokens=*" %%A in ('dir "каталог с файлами" /A-D /S /B') do @type nul >"%%A"  

Не обрабатывает ничего, если указана папка каталог с файлами или любая другая папка на русском !
(то есть я создал папку и назвал её "каталог с файлами" - содержимое никак не обрабатывается). Если переименовать папку по англицки - "folder with files", то усё прекрасно обрабатывается (кроме read onle и скрытых файлов).  
Можно ли подкорректировать эти два момента.
 
PS Кстати, оба батника,  на которые нужно папку перетягивать,  содержимое русскоязыной папки прекрасно обрабатыват.
 
 
Добавлено:
PS2 Да, если корневая папка - которую в батнике прописываем - не на русском,  
то вложенные папки и файлы обрабатываются - и русские в том числе !  
Прям дискриминация языковая какая-то

Всего записей: 2319 | Зарегистр. 11-12-2002 | Отправлено: 03:13 06-10-2019
NIKZZZZ



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

Цитата:
Не обрабатывает ничего, если указана папка каталог с файлами или любая другая папка на русском !  

А кодировка батника OEM ?

Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 03:59 06-10-2019
kot1313



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NIKZZZZ
Скопировал с предыдущей страницы один в один.
А кодировка 1251
 
 
Добавлено:
Сохранил в 866.  
действительно, батник 866 папку "каталог с файлами" обработал исправно (кроме скрытых и ридонли).  
Спасибо за подсказку.
Я же говорил, языковая дискриминация  
 
Исчо б с ридонли и скрытыми поправить.
 

Всего записей: 2319 | Зарегистр. 11-12-2002 | Отправлено: 04:17 06-10-2019 | Исправлено: kot1313, 04:23 06-10-2019
NIKZZZZ



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

Цитата:
Исчо б с ридонли и скрытыми поправить.  


Код:
@for /F "Tokens=*" %%A in ('dir "каталог с файлами" /A /A-D /S /B') do @type nul >"%%A"  

К стати, ридонли не при чем, с помощью Dir не выводятся по умолчанию только скрытые и системные.

Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 04:39 06-10-2019 | Исправлено: NIKZZZZ, 05:07 06-10-2019
kot1313



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

Цитата:
Код:
@for /F "Tokens=*" %%A in ('dir "каталог с файлами" /A /A-D /S /B') do @type nul >"%%A"  
 
К стати, ридонли не при чем, с помощью Dir не выводятся по умолчанию только скрытые и системные.

NIKZZZZ
Этот код так же не смог заменить пустышками файлы с атрибутом "Только чтение"
Можно ли сделать так, чтоб перед "обнулением" батник снимал принудительно ВСЕ установленные атрибуты (тока чтнеие, системный, скрытый, архивный и т.д. ) с файлов внутри папок ?
Как я понимаю, после этой операции обнуление будет происходить безусловно ?
 
Добавлено:
PS И исчо одна загадка.  
Условие:
Создаем с помощью робокопи копию папки Users.
Внутри копии получаем циклическую ссылку \Users\Пользователь\AppData\Local\Application Data\Application Data\Application Data и т.д.
(на месте "Пользователь" у Вас будет имя пользователя Вашей конкретной системы)
Удаление подобного чуда-юда оказалось совсем нетривиальной задачей...
У меня получилось удалить подобное чудо тока с помощью сторонней программы PathTooLongPro.
Есть ли способ удалить подобное циклическое "чудо-юдо" с помощью батника\cmd ?

Всего записей: 2319 | Зарегистр. 11-12-2002 | Отправлено: 12:39 06-10-2019 | Исправлено: kot1313, 12:49 06-10-2019
NIKZZZZ



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

Цитата:
Можно ли сделать так, чтоб перед "обнулением" батник снимал принудительно ВСЕ установленные атрибуты (тока чтнеие, системный, скрытый и т.д. ) с файлов внутри папок ?  


Код:
attrib -r -s -h "каталог с файлами\*" /s

 
Добавлено:
kot1313

Цитата:
Есть ли способ удалить подобное циклическое "чудо-юдо" с помощью батника\cmd ?

При копирование с помощью RoboCopy исключить символические ссылки.

Цитата:
 /XJ :: исключить точки соединения и символические ссылки. (по умолчанию обычно включаются).


Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 12:49 06-10-2019 | Исправлено: NIKZZZZ, 12:49 06-10-2019
kot1313



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NIKZZZZ
Браво Мастер
Вот этот код батника (обязательно в кодировке 866)

Код:
attrib -r -s -h "C:\каталог с файлами\*" /s  
@for /F "Tokens=*" %%A in ('dir "C:\каталог с файлами" /A /A-D /S /B') do @type nul >"%%A"    

Усё прекрасно заменяет путышками.
Как оказывается усё просто и красиво.
OffTopic - Давно уже хотел поизучать язык работы с командным процессором, видимо уже пора

Всего записей: 2319 | Зарегистр. 11-12-2002 | Отправлено: 13:00 06-10-2019
Inoz2000



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

видимо, она нужна для нормальной работы и совместимости.
 
Ну и какая разница, 'циклическая' она или нет. удаляется она, но может не надо?
Есть связь \Documents and Settings - она ссылается на \Users - вы её тоже удаляете?

Всего записей: 3333 | Зарегистр. 23-04-2009 | Отправлено: 13:01 06-10-2019
kot1313



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

Цитата:
При копирование с помощью RoboCopy исключить символические ссылки.  

Это то как раз понятно, я так и делаю.
Тока когда первый раз наткнулся на этот нюанс с циклом, было немного не комфортно.
А усё таки есть возможность такую папку с зацикливанием грохнуть батником ?
 
2
Inoz2000

Цитата:
Ну и какая разница, 'циклическая' она или нет. удаляется она, но может не надо?  

Вопрос бообще-то академический
Удалить Надо. Тем более PathTooLong ведь копию удаляет (а оригиналы остаются на месте невредимыми)
Причем удаляет быстро.
Делаю вывод, что с очень большой вероятностью есть способ сделать эту операцию удаления "циклической ссылки" батником.
 
3
NIKZZZZ

Цитата:
attrib -r -s -h "каталог с файлами\*" /s  

А можно ли вставить код снятия атрибутов в батник, на который перетаскивалась папка для обнуления содержимых в ней файлов ?
Код вот (с предыдущей страницы) от  
A27

Цитата:
если нужно выполнить батник для определённой папки, можно перетащить папку на батник:
 @If not %1.==. If exist "%~1\" for /F "Tokens=*" %%A in ('dir "%~1" /A-D /S /B') do @type nul >"%%A"  

 
4
И ,исчо, можно ли объеденить две строчки в одну в моем получившемся коде (чтоб не вводить два раза "C:\каталог с файлами")
Заранее Спасибо за подсказки


Всего записей: 2319 | Зарегистр. 11-12-2002 | Отправлено: 13:03 06-10-2019 | Исправлено: kot1313, 02:44 08-10-2019
NIKZZZZ



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

Код:
@If not %1.==. If exist "%~1\" for /F "Tokens=*" %%A in ('dir "%~1" /A /A-D /S /B') do @attrib -r -s -h "%%A" & @type nul >"%%A"  

 

Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 13:25 06-10-2019
kot1313



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NIKZZZZ
СПАСИБО
Всё Гениальное просто !
И усё в одну строчку !

 
PS А что Вы порекомендуйте почитать, чтоб научиться делать такие коды, как Вы делаете ?

Всего записей: 2319 | Зарегистр. 11-12-2002 | Отправлено: 13:35 06-10-2019 | Исправлено: kot1313, 13:56 06-10-2019
Smitis



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

Цитата:
Есть ли способ удалить подобное циклическое "чудо-юдо" с помощью батника\cmd

Попробуйте при удалении добавить в начало этого чудо пути \\?\

----------
Разум когда-нибудь победит

Всего записей: 2340 | Зарегистр. 09-02-2003 | Отправлено: 16:09 06-10-2019
kot1313



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

Цитата:
Попробуйте при удалении добавить в начало этого чудо пути \\?\

Добавление \\?\ либо \\.\ перед диском не помогло.

Всего записей: 2319 | Зарегистр. 11-12-2002 | Отправлено: 17:58 06-10-2019 | Исправлено: kot1313, 02:42 08-10-2019
WiperX



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

Код:
cd /d CRITTER
..\dat2 a ..\CRITTER.DAT art\critters\*
cd /d MASTER
..\dat2 a ..\MASTER.DAT art\backgrnd\*

Всего записей: 779 | Зарегистр. 17-03-2009 | Отправлено: 22:10 06-10-2019
Inoz2000



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

Всего записей: 3333 | Зарегистр. 23-04-2009 | Отправлено: 22:17 06-10-2019
WiperX



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

Всего записей: 779 | Зарегистр. 17-03-2009 | Отправлено: 22:18 06-10-2019
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброе время, WiperX
Вариант1 - где у Вас находится MASTER относительно CRITTER?  

Код:
cd /d CRITTER  
..\dat2 a ..\CRITTER.DAT art\critters\*  
cd /d ..\MASTER  
..\dat2 a ..\MASTER.DAT art\backgrnd\*

или

Код:
 
pushd CRITTER  
..\dat2 a ..\CRITTER.DAT art\critters\*  
popd
pushd MASTER  
..\dat2 a ..\MASTER.DAT art\backgrnd\*
popd
 

Вариант 2 - если dat2 прерывает батник... Когда-то такое встречал с jq. Тогда наверное пробовать запускать через start
start /w ..\dat2 a ..\MASTER.DAT art\backgrnd\*

Всего записей: 1825 | Зарегистр. 07-08-2002 | Отправлено: 22:25 06-10-2019
WiperX



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex_Piggy
Спасибо! С pushd и popd упаковалось как положено

Всего записей: 779 | Зарегистр. 17-03-2009 | Отправлено: 22:33 06-10-2019 | Исправлено: WiperX, 00:30 07-10-2019
Jonmey

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

Цитата:
А Видеть постоянно в корне диска с ненужную мне папку Documents and Settings - Это нормально ?

Да, это более чем нормально. Так задумано для совместимости со старыми программами.
Физически подобные папки (напр. с\Documents and Settings) являются так называемыми junctions (особыми ссылками), на которых изначально стоит запрет на доступ для everyone. Когда запрет нарушается и юзер пытается "войти" в эту папку ос  выполняет определенный алгоритм, в виде длинного цикла (он не бесконечен, но достаточно длинен), результатом которого является видимость "бесконечной вложенности папок". На самом же деле, юзер ушастый ползая по этим, как бы, вложенным папкам, физически топчется на одном месте (с:\users), никуда не перемещаясь. Соответственно, попытка удалить эти вложенные папки физически ничего не удалит (поскольку, физически в них ничего нет, как и самих папок), но с большой долей вероятности создаст себе проблемы.
Для корректной работы oc крайне рекомендуется сохранять права доступа на подобные виртуальные папки в том виде, в котором они находятся при установке винды.

Всего записей: 1173 | Зарегистр. 17-01-2011 | Отправлено: 23:37 06-10-2019
kot1313



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А по гарантированному, то есть безусловному удалению папки (как в приведённом мной выше примере) есть что-нибудь ? Уточняю, я не собираюсь удалять оригинальную папку Application Data в users.  
Мне нужно иметь запасной  способ быстро удалить случайно сделанную копию этой папки с помошью батника\cmd
Сейчас я её удалил с помощью PathTooLong
Но лучше иметь два инструмента, чем один !

Всего записей: 2319 | Зарегистр. 11-12-2002 | Отправлено: 00:21 07-10-2019 | Исправлено: kot1313, 02:39 08-10-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.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru