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

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

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

Widok (19-11-2007 12:08): лимит страниц. продолжаем здесь  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

KLASS



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

 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
 
Примечание: Большие куски кода заключайте в тэг [more]  
 
Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Microsoft Windows » Задачи на bat-файлах 4
 
Полезные ссылки:
· Cmd. Описание от разработчиков
· Урок bat-аники (для начинающих)
· Набор GNU утилит для win32
· Пакет утилит для организации интерфейса в bat-файлах
· Использование ansi.sys
· cmdow — изменение параметров и видимости дос-окна
· blat — отправка почты из консоли
· Справка по командам в виде Html
· Команды RunDll32
· Quick Batch File Compiler - Позволяет превратить ваш батник в независимое приложение
· Пример - получение и обработка списка пользователей
 
 
Старая версия первого сообщения

Всего записей: 9735 | Зарегистр. 12-10-2001 | Отправлено: 04:28 24-09-2002 | Исправлено: Elroir, 19:35 11-09-2007
ymy



YourMyYour
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KLASS Я не совсем понял, а как у тебя имена .reg файлов генерятся?

Всего записей: 1339 | Зарегистр. 22-04-2002 | Отправлено: 21:31 24-09-2002
KLASS



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

Цитата:
как у тебя имена .reg файлов генерятся?

 
Кусок из батника
 

Код:
 
date /t > E:\date.txt
time /t > E:\time.txt
for /f "tokens=1" %%i in (E:\date.txt) do for /f "tokens=1,2 delims=: " %%j in (E:\time.txt) do reg export "HKLM\SOFTWARE\Resplendence Sp\Resplendent Registrar\Bookmarks" E:\!\BAK\REG\DAY\%%i_%%j-%%k.reg
del E:\date.txt
del E:\time.txt
 

 
в итоге в каталог E:\!\BAK\REG\DAY при каждой перезагрузке экспортируется ветка реестра под именами типа:  
16.09.2002_05-04.reg
17.09.2002_06-18.reg
23.09.2002_21-44.reg
и т.д.
 
Добавлено
Advanced_Guest

Цитата:
Имхо - решить такую задачу простым BAT-ником никак.

Все-таки народ заставил мою задачку работать через батники. Причем, как всегда довольно простое решение.  
---------------------------------------------------------------
(С) Mikhail Zhilin mwz@aha.ru
 
Создаём три файлика  (в каталоге с REG файлами (С) мое)
 
Lastreg.dat - с пробелом и без перевода строки на конце:

Код:
 
Regreg.bat  
 

 
Regreg.bat:

Код:
 
Regedit /s %1
 

 
Lastreg.bat:

Код:
 
Copy /y Lastreg.dat  {Lastreg}.bat
dir /b /o:-d /t:w *.reg>>{Lastreg}.bat
{Lastreg}.bat
 

 
Запускаем Lastreg.bat
С удалением старых -- в принципе, можно аналогично (с некоторыми проверками), изменив порядок сортировки на /o:d.
При простейшей проверке в итоге только самый последний файл и будет оставаться.
-------------------------------------------------------------
Если у мя в каталоге лежали
16.09.2002_05-04.reg
17.09.2002_06-18.reg
23.09.2002_21-44.reg
25.09.2002_02-49.reg
то на импорт отправляется именно 25.09.2002_02-49.reg т.е. самый новый. С удалением старых щас буду разбираться, еще не пробовал.

Всего записей: 9735 | Зарегистр. 12-10-2001 | Отправлено: 22:17 24-09-2002 | Исправлено: KLASS, 01:05 25-09-2002
ymy



YourMyYour
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KLASS
date /t > E:\date.txt можно заменить на %DATE%
time /t > E:\time.txt можно заменить на %TIME%
 
А основную задачу можно выполнить проще, при экспорте надо в некотором файле(last.bat) например сохранять имя файла, с командой импорта что то вроде  

Код:
echo reg import E:\!\BAK\REG\DAY\%%i_%%j-%%k.reg>last.bat

Тогда можно хоть часы переводить, хоть чаво

Всего записей: 1339 | Зарегистр. 22-04-2002 | Отправлено: 07:35 25-09-2002
Crash Master



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

Цитата:
у тя способ пошел который ymy предложил?

Еще не пробовал, вот только файлов ОЧЕНЬ много, и не будет никакой индикации, типа осталось 25%.. А если оборвется и нужно будет начинать все с начала? Может в каком-то файл менеджере при копировании есть опция exclude?

----------
Народная примета: Если сисадмин в 08.00 утpа на pаботе, значит он там ночевал...

Всего записей: 4900 | Зарегистр. 15-12-2001 | Отправлено: 08:18 25-09-2002
ymy



YourMyYour
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Crash Master
Дык например в Fare, если те которые не .old без расширения то выделяешь по маске *.  
или с начала выделяешь по *.* а потом снимаешь выделение у *.old
или сразу с такой маской *.*|*.old
и копируешь выделенные куда надо, с прогресс баром и всем таким.

Всего записей: 1339 | Зарегистр. 22-04-2002 | Отправлено: 08:41 25-09-2002 | Исправлено: ymy, 08:46 25-09-2002
Crash Master



Windows Master
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ymy
И как выделять/снимать выделение, вручную? Я же писал, что там миллион директорий. Я буду сидеть неделю.

----------
Народная примета: Если сисадмин в 08.00 утpа на pаботе, значит он там ночевал...

Всего записей: 4900 | Зарегистр. 15-12-2001 | Отправлено: 08:44 25-09-2002
ymy



YourMyYour
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Crash Master Я же написал по маске, на правой клавиатуре +,
ну или через меню Files\Select Group и пишешь *.*|*.old
 
Как ты без этого жил-то раньше, это же основная фича файловых менегеров

Всего записей: 1339 | Зарегистр. 22-04-2002 | Отправлено: 08:47 25-09-2002 | Исправлено: ymy, 08:55 25-09-2002
Crash Master



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

Цитата:
Как ты без этого жил-то раньше

Как-то не приходилось копировать столько файлов
Ок, попробую, спасибо.

----------
Народная примета: Если сисадмин в 08.00 утpа на pаботе, значит он там ночевал...

Всего записей: 4900 | Зарегистр. 15-12-2001 | Отправлено: 09:10 25-09-2002
KLASS



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

Цитата:
date /t > E:\date.txt можно заменить на %DATE%  
time /t > E:\time.txt можно заменить на %TIME%  

Не въеду никак -куда вставлять в (множество)?

Цитата:
А основную задачу можно выполнить проще

Точно!, однако... А как правильней код записывать в одну строку как то залепить или в две с командой FOR в каждой??
Я вот так забил.

Код:
 
for /f "tokens=1" %%i in (C:\date.txt) do for /f "tokens=1,2 delims=: " %%j in (E:\time.txt) do reg export "HKLM\SOFTWARE\Resplendence Sp\Resplendent Registrar\Bookmarks" E:\!\BAK\REG\DAY\%%i_%%j-%%k.reg
for /f "tokens=1" %%i in (C:\date.txt) do for /f "tokens=1,2 delims=: " %%j in (E:\time.txt) do echo reg import E:\!\BAK\REG\DAY\%%i_%%j-%%k.reg>last.bat
 

Всего записей: 9735 | Зарегистр. 12-10-2001 | Отправлено: 18:52 25-09-2002
ymy



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

Код:
 
for /f "tokens=1" %%i in ("%DATE%") do for /f "tokens=1,2 delims=: " %%j in ("%TIME%") do echo reg import E:\!\BAK\REG\DAY\%%i_%%j-%%k.reg >last.bat
 

 
А насчёт двух команд их можно в отдельный батник и передавать имя как параметр.

Всего записей: 1339 | Зарегистр. 22-04-2002 | Отправлено: 19:12 25-09-2002 | Исправлено: ymy, 06:24 26-09-2002
Crash Master



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

Цитата:
Я же написал по маске, на правой клавиатуре +,  
ну или через меню Files\Select Group и пишешь *.*|*.old  

Ок, так и сделал в вин соммандере и запустил на ночь, большой sanx

----------
Народная примета: Если сисадмин в 08.00 утpа на pаботе, значит он там ночевал...

Всего записей: 4900 | Зарегистр. 15-12-2001 | Отправлено: 19:22 25-09-2002
KLASS



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

Цитата:
("%DATE%")  

Ну и я туда же... тока без кавычек  

Цитата:
А насчёт двух команд их можно в отдельный батник и передавать имя как параметр

Учту! Сенкс
 
Добавлено
ymy
Исправь в последнем посте код, а то кто нить не разбираясь скопирует и будет потом репу ломать не хватает команды reg import.

Всего записей: 9735 | Зарегистр. 12-10-2001 | Отправлено: 19:41 25-09-2002
retro



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Прошу прощения, не нашел сразу такую тему, запостил в топике про backup, а оно прямо сюда просится... Пусть здесь тоже побудет?
 
 
 
На компе стоит Backup2001 Pro и каждую ночь делает два Job'a в разное время. Каждый Job примерно 25-30мг. Все это собирается в одной папке на одном и том же физическом диске и хранится (не стирается год). Кроме этого, на другом компе имеется Zip на 250мг. Как раз на рабочую неделю. На самый черный день... Надо 3 простейших батника, один из которых del *.* я написал сам  Остальные два уже сложнее... В общем нужно, чтобы:  
1) каждое воскресение (понедельник) все стиралось с Zip';  
2) каждое утро из папки с файлами Backup'oв забирались два ПОСЛЕДНИХ (свежих, по числу) и разных (по названию) файла;  
3) все это записать в log;  
4) никаких prog, КРОМЕ DOS, комп куда уходят файлы (где Zip), абсолютно пустой, харда нет (не совсем обычный - промышленный, но есть BIOS, 20 мг RAM, грузится с 5,25'' дискеты DOS 6.22 + сеть, модем и т.д.)...  
 
Какие-то есть переключатели в команде copy? Не смог найти...  

Всего записей: 1741 | Зарегистр. 22-06-2002 | Отправлено: 00:00 13-05-2003
Uncle KILLER



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KLASS, загляни сюда: http://www.ss64.com/nt/regedit.html , там про реестр вроде бы подробно сказано... На будущее...

Всего записей: 6501 | Зарегистр. 01-04-2002 | Отправлено: 03:47 13-05-2003 | Исправлено: Uncle KILLER, 03:50 13-05-2003
KLASS



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

Цитата:
там про реестр вроде бы подробно сказано... На будущее...  

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

----------
Process Explorer RU
Process Monitor RU
Process Hacker RU

Всего записей: 9735 | Зарегистр. 12-10-2001 | Отправлено: 08:34 13-05-2003
retro



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

Всего записей: 1741 | Зарегистр. 22-06-2002 | Отправлено: 17:38 13-05-2003
KLASS



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

Цитата:
Помоги мне, пожалуйста... Если, конечно, не в лом...  

Да дело не в том, что в лом, я видел твой пост, просто все как-то для меня запутано. Давай попробуем вслух начать разбираться, а народ думаю подключится.
1. пункт я так понял ты освоил, т.е. все у тя стирается
2.
Цитата:
каждое утро из папки с файлами Backup'oв забирались два ПОСЛЕДНИХ (свежих, по числу) и разных (по названию) файла;

Что значит забирались, по загрузке\перезагрузке или по расписанию или еще как. Если по расписанию то командой АТ, если по перегрузке у мя это файлы сценарии делают, как выше ymy подсказывал. Сразу возникает вопрос, кторый задал мне он:

Цитата:
а как у тебя имена .reg файлов генерятся?

А как у тя имена генерятся? Я вот к примеру программой
Цитата:
Backup2001 Pro  
не пользуюсь и не знаю чего она там бекапит. Возможно тебе стоит описать не только какими программами ты это делаешь, а еще и то, что ты бекапишь. Возможно есть разные пути осуществления твоей цели. Давай подробней все изложи.

----------
Process Explorer RU
Process Monitor RU
Process Hacker RU

Всего записей: 9735 | Зарегистр. 12-10-2001 | Отправлено: 18:19 13-05-2003
retro



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KLASS Ну, до сегодняшнего дня было так: один сет backup собирает все из папки "Мои документы" с диска C и пишет на другую партицию в свою папку, второй сет просто копирует всю папку с почтовыми делами (там балаган страшный, я просто целиком ее копирую, со всеми папками-подпапками) в ту же папку, где первый). Т.о. получается два файла каждый день. Backup каждый день полный - не инкреминтальный и не дифференциальный, поскольку они не большие - оба где-то 35-40 мг. Как я уже писал, компы не совсем обычные, стоят на мебельном заводике. Нет никакой возможности что-то физически всунуть, вот только есть встроенный накопитель типа Зип. На 1 компе Win98, где я поставил Backup2001 Pro из-за малого размера, хорошей работы и идеальной простоты... Вот по последнему пункту есть свои минусы, вернее нет никаких дополнительных установок, просто копирует и все. Главный диск (на 98) дышит на ладан, не сегодня-завтра гавкнется... В этом случае просто заменяется диск, на котором весь их софт и свой backup, t.e. никаких проблем с этим нет, а вот для почты и документов это просто не предусмотренно и все пропадет. Имя файла генерируется так: Mail_030510_1527.bkk и Doc_030510_1435.bkk, что означает год, месяц, число, время (час и минут). Я это могу изменить (для понимания DOS'om). Компы не выключаются, Backup делается по своему расписанию. Чего-то я путанно описал... Спроси еще, что надо добавить...
 
 
Добавлено
QBO_20030513_17-54-45.001 (Quick Backup Outlook)
Test_20030513_17-55-37.001 (Это я сам дал имя)
 
Вот так генерятся имена, и изменить их нельзя, я перепутал с другой прогой...
Можно только само имя, Тест, например. Все остальное добавляется само. Завтра, очевидно будут *****.002 и т.д.

Всего записей: 1741 | Зарегистр. 22-06-2002 | Отправлено: 19:28 13-05-2003
KLASS



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

Цитата:
На 1 компе Win98,

Упс.. во первых у мя ее нет в ящике, во вторых, я не уверен на 100, но думаю, что это так: дабы хоть что-то подобное можно было сделать автоматом, 98 не прокатит. У меня нечто подобное (ХР) с вычислением имени и даты делается при помощи команды FOR (запуск некоторой команды для каждого файла из заданного множества) см. выше в теме. В 98х эта команда ваще никакая. Попробуй посмотри в справке, чего она может. Но я сильно сомневаюсь, что на 98 можно такое замутить. Там ведь даже наверное и Xcopy нет команды? Я просто уже и не помню.  
Давай я буду просто нести ахинею, как я бы пытался это сделать теоретически в ХР, а ты смотри команды от 98. Чем черт не шутит. Значит так, у тя в определенном каталоге собираются туева хуча файло и те надо чтобы от теда брались тока два последних файло. Значит, думаю, надо убить все файло в папке кроме последних, новых двух, а их уже копировать куда угодно. К примеру у меня есть такой каталог куда скидывается файло типа твоего и мне надо, так чтобы файло накапливалось не более 2, а старые убивались. Для этого у мя в батнике прописана строка

Цитата:
 
cd /d E:\!\BAK\REG\DAY - это каталог кда файло валится
@for /f "skip=2" %%i in ('dir /b /o:-d /t:w *.reg') do @del /q %%i
 

Все команды я ессно наизусть не помню, но теоритически у мя в данном каталоге всегда остается только 2 файла и потом я могу делать с ними все что хочу из этого же батника, той же командой COPY.  
А вот теперь у кого стоит 98 пускай скажут, если там такая возможность команды FOR в чем я шибко сомневаюсь.

----------
Process Explorer RU
Process Monitor RU
Process Hacker RU

Всего записей: 9735 | Зарегистр. 12-10-2001 | Отправлено: 21:38 13-05-2003
retro



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

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

Нет, в том-то и дело, что нельзя... А вдруг 2 последних (предпоследних) как раз и выйдут плохо, а все другие угроблю? Я могу делать все, что хочу, но только на 2 компе. В 98 есть Xcopy, а зачем она нужна, ведь папок нет, только файлы. У меня тоже нет 98, она просто на мой комп не ставится... Сколько раз хотел поставить и имидж сделать, чтобы всякие такие задачки решать, но увы, не дружит с железом. Много его у меня...
For есть и в DOS, но имена длинные опять же...

Всего записей: 1741 | Зарегистр. 22-06-2002 | Отправлено: 22:41 13-05-2003
   

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

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd)
Widok (19-11-2007 12:08): лимит страниц. продолжаем здесь


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

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru