Ru-Board.club
← Вернуться в раздел «Microsoft Windows»

» Задачи на bat-файлах 10

Автор: ASE_DAG
Дата сообщения: 05.05.2011 21:38
king_stiven
Чего вы вообще хотите?
Автор: Bezzz
Дата сообщения: 05.05.2011 21:51

Цитата:
king_stiven
Чего вы вообще хотите?

Видимо, вытрахать моск бестолковыми вопросами.
Автор: king_stiven
Дата сообщения: 05.05.2011 21:55
ASE_DAG
Спасибо за помощь, но в авке уже не охота копаться, не факт, что сработает. Ситуация с седом прояснилась, теперь понимаю, куда копать.

Цитата:
А вот так. a,b — это предполагается именно диапазон строк.



Добавлено:

Цитата:
вытрахать моск

Какой моск?
Автор: ASE_DAG
Дата сообщения: 05.05.2011 22:03
king_stiven
> в авке уже не охота копаться, не факт, что сработает
Почему это «не факт»? И где вы там собрались «копаться»?

> Ситуация с седом прояснилась, теперь понимаю, куда копать.
И чего вы хотите там накопать? Если решение для этого вашего «Айова—Монтана», то перечитайте то, что я вам писал помимо авковского кода. Я даже процитирую.

Цитата:
Так это принципиальное ограничение обработки потока «на лету» построчно. Начиная выводить строки, Сед еще понятия не имеет о том, что там дальше по потоку.
Здесь два принципиальных разных подхода к решению: 1) обрабатывать за раз запись заведомо большую, чем искомый блок текста (так мы поступили выше, при выводе HTML-заголовков); 2) выводить результат только по завершении обработки потока.

Второй вариант почти в любом случае более предпочтителен, им и воспользуемся:

$ cat king_stiven.txt
Ququ.
Iowa.
Non-desired line
Iowa.
Desired line 1
Desired line 2
Desired line 3
Montana.
Blah-blah.


[no]$ awk '/Iowa/{delete s; p=1} p==1{s[FNR]=$0} /Montana/{exit 0} END{for (i in s) print s[i]}' king_stiven.txt[/no]
Iowa.
Desired line 1
Desired line 2
Desired line 3
Montana.


> вытрахать моск бестолковыми вопросами
Вот у меня точно такое же впечатление сложилось (без обид, ;).
Автор: Bezzz
Дата сообщения: 05.05.2011 22:27

Цитата:
Какой моск?

Тот самый, который у вас, судя по всему, плохо работает.
А именно - головной.
ASE_DAG, судя по постам это уже давно не впечатление.
Я бы назвал это флудом.
Автор: king_stiven
Дата сообщения: 06.05.2011 00:38
awk "/Iowa/{delete s; p=1} p==1{s[FNR]=$0} /Montana/{exit 0} END{for (i in s) print s[i]}" king_stiven.txt

Результата нет. Ничего не выводит. Если простой файл обработать, выводит, а если htm то нет.
Автор: ASE_DAG
Дата сообщения: 06.05.2011 01:24
king_stiven
> а если htm
А конкретно?
Автор: king_stiven
Дата сообщения: 06.05.2011 05:55
Например на данной странице вывести от
AdRiver
до
target

Добавлено:
target
...
target
...
AdRiver
...
AdRiver
...
target

...
target
...
Получается надо так: Найти самый последний в текстеAdRiver и вниз от него найти самый первыйtarget, хоть в одну строку хоть через несколько строк.
Автор: ASE_DAG
Дата сообщения: 06.05.2011 10:24
king_stiven
> AdRiver до target
$ awk '/target/{delete s; p=1} p==1{s[FNR]=$0} p==1&&/AdRiver/{exit 0} END{for (i in s) [no]print s[i]}' king_stiven.txt[/no]

Добавлено:
> Получается надо так: Найти самый последний в текстеAdRiver
> и вниз от него найти самый первыйtarget
Нет, неправильно.
Если хотите опишу алгоритм, записанный на Авке выше словами: находим первый target и начинаем записывать строки в массив; если находим еще один target, сбрасываем записанное и начинаем массив строк заново; по обнаружении AdRiver после target'а (это отличие от прошлой версии) или по концу потока (а вот этого, кстати, вы, возможно, и не желаете, уточните) выводим массив строк.
Автор: wolf0425
Дата сообщения: 06.05.2011 11:34

Цитата:
Если хотите опишу алгоритм, записанный на Авке выше словами: находим первый target и начинаем записывать строки в массив; если находим еще один target, сбрасываем записанное и начинаем массив строк заново; по обнаружении AdRiver после target'а (это отличие от прошлой версии)
у тебя в описании AdRiver и target перепутаны местами относительно требуемого, уж не знаю что в коде...

Добавлено:
king_stiven, а файле может случиться строка с двумя AdRiver?
или случиться так, что после последнего AdRiver - нет target, но есть после предпоследнего?
может проще было давно решить частную задачу в два прохода?
Автор: Johny_x3mal
Дата сообщения: 06.05.2011 14:36
Всем доброго времени суток!
Тут такая задача, надо сменить код MS Office 2007 на компах.
Я залез в командную строку и нашел команду reg

REG <операция> [Список параметров]
<операция> [ QUERY | ADD | DELETE | COPY |
SAVE | LOAD | UNLOAD | RESTORE |
COMPARE | EXPORT | IMPORT | FLAGS ]

Дальше нашел пути в реестре:

HKLM\Software\Microsoft\Office\12.0\Registration\{90120000-0030-0000-0000-0000000FF1CE}\DigitalProductID
HKLM\Software\Microsoft\Office\12.0\Registration\{90120000-0030-0000-0000-0000000FF1CE}\ProductID

Надо удалить эти два параметра и тогда при открытии офиса пройдет обновление и запросится новый код.

Сама проблема в том, что {90120000-0030-0000-0000-0000000FF1CE} - этот раздел реестра постоянно меняется.
Вопрос: помогите написать батник, в котором шел бы поиск DigitalProductID и roductID, при нахождении - удалял эти параметры.

Автор: res2001
Дата сообщения: 06.05.2011 15:08
Johny_x3mal

Код: @echo off
for /f "skip=4" %%a in ('reg query "HKLM\Software\Microsoft\Office\12.0\Registration"') do (
    for /f "skip=4 tokens=*" %%b in ('reg query "%%a" /v ProductID 2^>nul') do (
        echo reg delete "%%a" /v ProductID
        echo reg delete "%%a" /v DigitalProductID
))
Автор: Johny_x3mal
Дата сообщения: 06.05.2011 15:19
res2001
чет ничего (
Автор: king_stiven
Дата сообщения: 06.05.2011 15:38
ASE_DAG
Да, спасибо, вроде пашет, пока сильно не гонял.

Цитата:
или по концу потока

Всегда берётся интервал не до конца потока а до второго выражения, которое всегда есть. Есть описание команд на русском? Вроде как попроще седа.

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

Уже решил, но там свои траблы и проходов и соотвественно скачек было до 3-х, некрасиво.
С авком неплохо замутилось, там тока один файл вроде требуется awk.exe.

Добавлено:

Цитата:
опишу алгоритм, записанный на Авке выше словами: находим первый target и начинаем записывать строки в массив; если находим еще один target, сбрасываем записанное и начинаем массив строк заново; по обнаружении AdRiver после target'а

отлично
Автор: res2001
Дата сообщения: 06.05.2011 15:43
Johny_x3mal
У тебя какая ОСь? Я тестил на ВинХП. Возможно у тебя reg выводит немного в другом формате. Попробуй поиграться параметром skip в обоих форах.

Добавлено:
Посмотрел на Вин7, так и есть reg не пишет лишних строк, видимо в семерке skip вообще можно убрать. Полностью протестить не могу - семерка без офиса.
Автор: Johny_x3mal
Дата сообщения: 06.05.2011 16:16
res2001
Спасибо. У меня семерка .
Потестю отпишусь.

Добавлено:
Работает !!!
Только запрос дает на удаление ....

Добавлено:

Цитата:

@echo on
for /f %%a in ('reg query "HKLM\Software\Microsoft\Office\12.0\Registration"') do (
for /f %%b in ('reg query "%%a" /v ProductID 2^>nul') do (
reg delete "%%a" /v ProductID /f
reg delete "%%a" /v DigitalProductID /f
))


добавил ключик /f - вроде бы сработало.
Автор: Bezzz
Дата сообщения: 06.05.2011 18:36

Цитата:
С авком неплохо замутилось, там тока один файл вроде требуется awk.exe.

Ну ты жжОш. awk.exe и есть тот самый Авк. :-D
Автор: king_stiven
Дата сообщения: 06.05.2011 19:26
sed из последних идёт ещё с несколькими файлами, это тебе инфа для развития моска.
Автор: Bezzz
Дата сообщения: 06.05.2011 20:42
king_stiven, давай, блесни своими познаниями, расскажи мне что такое авк, сед, регексп, и всё такое прочее. Особенно надави на то, как их правильно применять. Ты же спец, как я погляжу. Развивай мой моск, умоляю. А я пока посплю ;-D
Автор: Sergei Ivanov
Дата сообщения: 07.05.2011 17:22
Добрый день. Помогите пожалуйста написать скрипт в bat-файле для резервирования каталога.. Например папку backup на диске D. И чтобы этот скрипт запускался автоматически раз в неделю. Заранее благодарю
Автор: res2001
Дата сообщения: 07.05.2011 17:32
Sergei Ivanov
Не совсем понятен термин "резервирование каталога". Я подозреваю, что это создание резервной копии. Если да, то читай дальше.
Воспользуйся любым архиватором, например 7z:
7z a -r d:\backup.7z d:\backup\
Вставь эту команду в шедулер.
Автор: Sergei Ivanov
Дата сообщения: 07.05.2011 17:40
Да, это создание резервной копии. Я уже разобрался как это можно сделать через xcopy, но мне желательно сделать это с помощью команды ntbackup.. И самое главное, как реализовать запуск скрипта раз в неделю... Я уж подумывал просто паузу на неделю поставить, но как то думаю это очень глупо-))
Автор: Bezzz
Дата сообщения: 07.05.2011 19:28
Sergei Ivanov, ось какая? Если Win 7 то тебе не повезло - в семерке ntbackup отсутствует. Ну а раз в неделю можно запускать с помощью планировщика заданий. На крайняк есть консольная at
Автор: Sergei Ivanov
Дата сообщения: 07.05.2011 20:14
Я знаю что на вин7 его нет.. XP ось.. Bezz, проблема в том и состоит, что моя задача сделать скрипт ( не использую доп. программ) для бат-файла ... Используя ntbackup
Автор: Bezzz
Дата сообщения: 07.05.2011 21:01
Sergei Ivanov, а что мешает сделать

Код: ntbackup /?
Автор: Sergei Ivanov
Дата сообщения: 07.05.2011 21:06
... Ещё раз объясню. Мне нужно написать программу в bat-файле для создания резервной копии какого-либо файла или папки. Используя при этом команду ntbackup, с помощью неё можно сделать архивацию какого-либо объекта. Если я ошибаюсь, поправьте. Помощь которая даётся в описании самой команды не помогает.. Поэтому я и прошу помощи на форуме.
Автор: Bezzz
Дата сообщения: 07.05.2011 21:47
Sergei Ivanov, ещё раз повторяю, bat файл вам не нужен. Для копирования чего-либо куда либо вы можете воспользоваться ntbackup. Все необходимые опции для применения этой команды можно узнать, запустив ntbackup с ключем /?
Там все написано.
Для организации запуская чего-либо раз в неделю идём в Панель управления там есть Назначенные задания. Запускаем Добавить задание и получаем Щастье :-)
Автор: Sergei Ivanov
Дата сообщения: 08.05.2011 10:30
Bezz. Я это всё прекрасно понимаю. И про программу ntbackup. И про планировщик задач.. Но мне сделать нужно НЕ ТАК. Не через планировщик. Суть то в том, что МНЕ нужно сделать bat- файл - В этом заключается моя задача.
Автор: 01MDM
Дата сообщения: 08.05.2011 12:11
Sergei Ivanov
Чтоб дважды не постить, может это решение подойдет.
Автор: Sergei Ivanov
Дата сообщения: 08.05.2011 13:11
01MDM
Я как бы только учусь всему этому, поэтому расскажу как я всё это понял, если что исправьте.. Т.е. в данном примере с помощью команды xcopy мы копируем изменённые файлы в определённое время, т.е. если вместо %ch_date% поставить любую дату, он именно в это время будет проверять изменённые файлы и их копировать, так?
Если так, то у меня другой вопрос, как записать отдельно в bat-файле чтобы он просто в начале каждой недели в 00.00 копировал все файлы в папку, не проверяя изменённые они ли нет.

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071

Предыдущая тема: зависает установка Windows XP: 39 минут


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.