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

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

Модерирует : KLASS, IFkO

vu1tur (29-07-2011 12:47): Задачи на bat-файлах 11
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



Moderator-Saaber
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Задачи на bat-файлах 10
(часть 1, часть 2, часть 3, часть 4, часть 5, часть 6, часть 7, часть 8, часть 9)
Вопросы, задачи и их решения по работе с командными файлами, а также сопутствующие ссылки.

 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!! Чтобы не копировались концевые пробелы из форума, жмите на ссылку "Редактировать" в посте, и уже из редактора копируйте батник без пробелов.
 
Также для удаления концевых пробелов пользуйтесь скриптом от Nagual, или VBS-Скрипт-Модулем от ViSiToR.
 
Для перекодирования кирилицы 866<—>1251 пользуйтесь онлайн сервисом Перекодировщик кириллицы

 
Дополняем шапку: добавляем готовые решения, полезные ссылки.
 
Примечание: Большие куски кода заключайте в тэг [more]  
 
Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Программы » Командная строка, батники\сценарии
 
Полезные ссылки
 
Полезные утилиты
 
Готовые решения и частые вопросы:
  • Встроенный справочник по командам
  • Создание помощи по всем командам консоли 2000 и XP
  • Делаем паузу в командном файле стандартными средствами Windows
  • Альтернативные решения »
  • Работа с текстом, датой, и файлами »
  • Администрирование, автоматизация и сеть »
  • Работа с переменными и параметрами ком. строки »
     
    Описания работы команд и символов участниками темы:
    · setlocal enabledelayedexpansion и переменные окружения
    · символы & и && в командной строке
    · Переменная %0

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 11:53 09-01-2011 | Исправлено: mazafakermazafaka, 11:22 04-06-2011
    adam264

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven, я так понимаю это не весь скрипт? В итоге открывается файл и в нём перебираются строки, но ничего не изменяется. Можно разжевать что означает:
    delims=" %%a
    echo "%%a"|
    errorlevel 1 1>>1.txt
    и где почитать про символ |
     
    вот есть пример замены строк, как его переделать в подстроки?

    Код:
    @echo off  
    chcp 1251  
     
    for /f "tokens=*" %%a in ('more^<old.txt') do call :_replace %%a  
    goto eof  
     
    :_replace  
    set i=%*  
    echo %i%  
    set i=%i:папа=отец%  
    set i=%i:мама=мать%  
    set i=%i:доча=сын%  
    echo %i%>>new.txt  
    goto eof  
     
    :eof

    Всего записей: 23 | Зарегистр. 15-02-2009 | Отправлено: 13:55 04-07-2011
    king_stiven

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

    Цитата:
    delims=

    delims=xxx    Задает набор разделителей. Заменяет набор разделителей по умолчанию, состоящий из пробела и символа табуляции.
     

    Цитата:
    echo "%%a"|

    echo /?
    Вывод сообщений
    Фильтр команды используется с символом перенаправления канала команды (|) и является командой внутри команды, которая считывает ввод команды, преобразовывает ввод, а затем записывает выход. Команды-фильтры дают возможность сортировать, просматривать и отбирать часть выходной информации других команд.
     
     
    Добавлено:
    If /?
    for /?
     
    Добавлено:

    Цитата:
    Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!! Чтобы не копировались концевые пробелы из форума, жмите на ссылку "Редактировать" в посте, и уже из редактора копируйте батник без пробелов.


    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 14:28 04-07-2011
    adam264

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven, не знаю, не пашет. Я скопировал в папку батник и файл в котором надо удалить подстроки, заархивировал это дело и залил, можешь проверить.
     
    http://webfile.ru/5420403

    Всего записей: 23 | Зарегистр. 15-02-2009 | Отправлено: 14:48 04-07-2011
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    adam264
    из строки  
    File: b1.paa Compressed: NO
    тебе надо удалить
     Compressed: NO
    а не всю строку?
    Тогда я или ты ошибся с заданием. Термин подстроки расплывчат, лучше говорить "убрать словосочетания"

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 15:08 04-07-2011
    adam264

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    В строке  
    File: b1.paa Compressed: NO
    мне надо оставить только
    b1.paa, т.е. удалить "File: "и " Compressed: NO" и так по всем строкам.

    Всего записей: 23 | Зарегистр. 15-02-2009 | Отправлено: 15:14 04-07-2011
    king_stiven

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

    Код:
    @echo off
    chcp 1251
     
    for /f "tokens=*" %%a in ('more^<Abel.log') do call :_replace "%%a"
    goto eof
     
    :_replace
    set "i=%~1"
    set i=%i:File: =%
    set i=%i: Compressed: NO=%
    set i=%i:Extraction result: SUCCESS!=%
    if defined i 1>>spisok.txt echo %i%

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 15:15 04-07-2011
    adam264

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ура! Уже работает, только теперь между строк выводит сообщение:
    Режим вывода команд на экран (ECHO) отключен. Можно его не выводить?

    Всего записей: 23 | Зарегистр. 15-02-2009 | Отправлено: 15:33 04-07-2011
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    да шо ж такое, не выводит у меня
     
     
    Добавлено:

    Цитата:
    Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!! Чтобы не копировались концевые пробелы из форума, жмите на ссылку "Редактировать" в посте, и уже из редактора копируйте батник без пробелов.


    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 15:41 04-07-2011
    adam264

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven, я преклоняюсь пред тобой за твоё терпение! спасибо огромное, работает как просил!  А сложно доработать этот скрипт чтобы он скидывал такие списки из всех файлов в каталоге с расширением log также в один файл?

    Всего записей: 23 | Зарегистр. 15-02-2009 | Отправлено: 15:56 04-07-2011
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    adam264
    Лучше сразу сформулируй сверхзадачу.
     

    Цитата:
    скидывал такие списки из всех файлов в каталоге с расширением log также в один файл

    copy /a "*.log" 1.txt

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 16:18 04-07-2011
    adam264

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

    Цитата:
    Лучше сразу сформулируй сверхзадачу.


    у меня много файлов с разными названиями в одной папке, объединяет их похожее содержимое и расширение *.log. В идеале хотелось бы скинуть всё что в них есть по тому же принципу в один файл добавляя в начало строки (") а в конец строки (",) без скобочек.
    Пример:
    "b1.paa",
    "bah.paa",
    "bt.paa",
    "pipipish.pac",
    "pishpish.pac",
    В общем должен получиться такой большой-большой список.

    Всего записей: 23 | Зарегистр. 15-02-2009 | Отправлено: 16:41 04-07-2011 | Исправлено: adam264, 17:32 04-07-2011
    Karbid87



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ребята, подскажите через bat'ник можно поставить запрет на изменение кокретного значения?
    Например, есть вот такой ключ реестра (указываю в общем виде, так как важно лишь значение, а не путь до него)
    [HKEY_CURRENT_USER\Software\xxx\yyy\zzz\aaa\bbb]
    "Program"=dword:001b7740
    Можно ли значение параметра "Program" заморозить? Значение "Program" автоматически меняется во время работы программы. Нужно сделать так, чтобы оно не изменялось во время работы этой программы, а всё время оставалось именно такое. Возможно ли это сделать с помощью bat файлов?

    Всего записей: 394 | Зарегистр. 29-01-2011 | Отправлено: 17:03 04-07-2011
    adam264

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Karbid87, если только постоянно менять перед выключением windows. А так на мой взгляд лучший способ это сидеть под гостем, а когда надо делать из гостя администратора. Под гостем у программ нет прав изменять реестр.

    Всего записей: 23 | Зарегистр. 15-02-2009 | Отправлено: 17:10 04-07-2011
    Karbid87



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    adam264, понятно тогда

    Всего записей: 394 | Зарегистр. 29-01-2011 | Отправлено: 17:11 04-07-2011
    adam264

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven, в конец строк я уже добавил путём замены не на пустоту а на ",,. Я уже совсем разленился, думаю мне это самомому уже под силу. В любом случае огромное спасибо тебе за помощь!

    Всего записей: 23 | Зарегистр. 15-02-2009 | Отправлено: 17:49 04-07-2011 | Исправлено: adam264, 18:15 04-07-2011
    king_stiven

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

    Код:
    @echo off
    chcp 1251
     
    for %%c in (*.log) do for /f "tokens=*" %%a in (%%c) do call :_replace "%%a"
    goto eof
     
    :_replace
    set "i=%~1"
    set i=%i:File: =^"%
    set i=%i: Compressed: NO="%
    set i=%i:Extraction result: SUCCESS!=%
    if defined i 1>>spisok.txt echo %i%

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 18:12 04-07-2011
    adam264

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven, вот сейчас вроде то что хотел, больше и не надо, но при первом прогоне были две ошибки (не убирались сообщения, хотя должны были, проверил всё до символа). После второго моего добавления каждый раз через строчку пишет:
    Extraction result: CHECKSUM Error!=

    Код:
    @echo off
    chcp 1251
     
    for %%c in (*.log) do for /f "tokens=*" %%a in (%%c) do call :_replace "%%a"
    goto eof
     
    :_replace
    set "i=%~1"
    set i=%i:File: =^"%
    set i=%i: Compressed: NO=",%
    set i=%i: Compressed: YES=",%
    set i=%i:Extraction result: CHECKSUM Error! - file successfuly recovered=%
    set i=%i:Extraction result: SUCCESS!=%
    set i=%i:Extraction result: CHECKSUM Error!=%
    if defined i 1>>spisok.txt echo %i%

     
    После продолжительных тестов я пришёл к выводу что это не мы, а винда тупит. Но всё равно много физического труда съекономили! Если программа 40 секунд (!!! я засекал) сортирует, то сколько бы я сидел.

    Всего записей: 23 | Зарегистр. 15-02-2009 | Отправлено: 18:49 04-07-2011 | Исправлено: adam264, 22:57 04-07-2011
    king_stiven

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

    Цитата:
    винда тупит.


    Код:
    @echo off
    chcp 1251
    for /f "tokens=2" %%a in ('findstr /c:"File: " *.log') do echo "%%a",>>1.txt

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 23:22 04-07-2011
    NIKZZZZ



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

    Цитата:
    подскажите через bat'ник можно поставить запрет на изменение кокретного значения?  

    Ограничить доступ, примерно так:
     

    Код:
    SetACL.exe -on "hklm\HKEY_CURRENT_USER\Software\xxx\yyy\zzz\aaa\bbb"  -ot reg -actn ace -ace "n:System;p:set_val;m:deny"

     
    Саму SetACL можно взять здесь. Вечный триал

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 11:44 05-07-2011 | Исправлено: NIKZZZZ, 11:46 05-07-2011
    Luna_Q



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

    Цитата:
    <Name>AMD Athlon(tm) XP 1700+</Name>
    <Name>Windows XP Professional Service Pack 3</Name>
    <Name>C</Name>

    батник:

    Код:
    for /f "tokens=3 delims=<>" %%i in ('find "<Name" 224876.XML') do echo %%i>>Result.txt  

    вывод:

    Цитата:
    AMD Athlon(tm) XP 1700+
    Windows XP Professional Service Pack 3
    C

    Но, мне нужно вывести только первую строку или только вторую, а не все строки с name (содержимое между Name всегда разное, поэтому из поиска исключается).
    Можно это как-то реализовать?

    Всего записей: 94 | Зарегистр. 13-07-2010 | Отправлено: 12:53 05-07-2011
       

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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 10
    vu1tur (29-07-2011 12:47): Задачи на bat-файлах 11


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru