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

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

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

evle (19-03-2008 19:44): Лимит страниц.
Задачи на bat-файлах 5
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 15:21 11-09-2007 | Исправлено: Elroir, 01:52 26-02-2008
    wolf0425



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

    Цитата:

    Цитата:
    2 Может ли gsar находить стринг (часть строки), а заменять всю строку на другую?
    Нет.
    Дополнение: зато так можно искать/заменять с помощью sed

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 14:52 03-10-2007
    GORA2



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

    Цитата:
    Можно заменить эти символы на их  ASCII коды  
    Это я понял из описания, но т.к. путь находиться в переменной и мне заранее не известен, то как можно автоматизировать эту замену? Перебирать все возможные спец символы?
     

    Цитата:
    зато так можно искать/заменять с помощью sed  
    Уж очень он "тяжел" для моих задач, но спасибо за подсказку.

    Всего записей: 1271 | Зарегистр. 26-01-2006 | Отправлено: 14:57 03-10-2007 | Исправлено: GORA2, 15:20 03-10-2007
    Elroir



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

    Цитата:
    Перебирать все возможные спец символы?

    Ага
    На самом деле их не так уж и много.

    ----------
    "В интернете есть все, но не всегда"

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 15:15 03-10-2007
    GORA2



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

    Цитата:
    Ага  
    На самом деле их не так уж и много.
    А не могли бы Вы перечислить все допустимые символы возможные в путях (ну два алфавита и цифры можно исключить, я это знаю) так сказать в порядке "ликбеза" .
    Кстати
    Цитата:
    gsar-а это двоеточие, трехзначный десятичный код ASCII и еще раз двоеточие
    по моему, не совсем верно. Второго двоеточия не надо.

    Всего записей: 1271 | Зарегистр. 26-01-2006 | Отправлено: 15:25 03-10-2007 | Исправлено: GORA2, 15:35 03-10-2007
    Elroir



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

    Цитата:
    Второго двоеточия не надо

    Точно - это я переборщил.

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

    Тут дело не в возможных символах в путях, а в тех, которые cmd может интерпретировать как спец. символы - & ! % ^ ( ) | < > (может что-то и пропустил).

    ----------
    "В интернете есть все, но не всегда"

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 15:47 03-10-2007
    GORA2



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

    Цитата:
    Тут дело не в возможных символах в путях, а в тех, которые cmd может интерпретировать как спец.  
    Да, но тут еще вмешивается и gsar. Двоеточие и пробел (а может и еще что то) в путях тоже приходиться обходить.
    Пошел думать. Спасибо за помощь.

    Всего записей: 1271 | Зарегистр. 26-01-2006 | Отправлено: 16:08 03-10-2007
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    GORA2
    replacer.exe вроде не боится спецсимволов, ссылки не помню.
     
    Вопрос: у кого английская винда, если в батнике будет chcp 1251, не сбоит?

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 19:16 03-10-2007 | Исправлено: king_stiven, 19:51 03-10-2007
    Elroir



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

    Цитата:
    Вопрос: у кого английская винда, если в батнике будет chcp 1251, не сбоит?

    Что ты имеешь в виду?

    ----------
    "В интернете есть все, но не всегда"

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 22:23 03-10-2007
    king_stiven

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

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 22:40 03-10-2007
    Elroir



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

    ----------
    "В интернете есть все, но не всегда"

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 23:47 03-10-2007
    Dying_Fetus

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Каким образом я могу присвоить переменной результат выполнения команды hostname?
     
    Вот пример:
    set name=hostname
    echo %name%
    К моему удивлению на дисплюе показывается не имя компа, а именно текст "hostname". Стрянно...

    Всего записей: 4 | Зарегистр. 08-04-2007 | Отправлено: 23:52 03-10-2007
    Elroir



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

    Код:
     
    for /f %%a in ('hostname') do set "name=%%a"
    echo %name%
     

     
    king_stiven

    Цитата:
    replacer.exe вроде не боится спецсимволов, ссылки не помню.

    Она (утилита) у тебя есть? Если да - выложи где нибудь, а то в инете этих replacer.exe...

    ----------
    "В интернете есть все, но не всегда"

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 00:06 04-10-2007
    king_stiven

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

    Код:
    echo hostname

    и

    Код:
    hostname

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 00:11 04-10-2007
    BorlandIMHO

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

    Цитата:
    К моему удивлению на дисплюе показывается не имя компа, а именно текст "hostname". Стрянно...
    Ничего странного. Показывается значение переменной name, которой непосредственно перед этим было присвоено значение hostname.
    Вообще говоря, мне не очень понятен смысл данного "скрипта"...
    Если я правильно понял, он выпонняется под Windows, а в любых WinNT (3.5x/4.0/2000/XP/2003/Vista) определена переменная окружения COMPUTERNAME со значением, соответствующим имени компа. Т.е., echo %COMPUTERNAME% просто выдаст имя компа без каких-либо дополнительных команд...


    ----------
    http://www.imho.ws

    Всего записей: 2403 | Зарегистр. 12-10-2006 | Отправлено: 00:13 04-10-2007
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    replacer
    replacer.exe /?
    Режим множественной замены у неё барахлил.

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 00:19 04-10-2007 | Исправлено: king_stiven, 00:23 04-10-2007
    Dying_Fetus

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    BorlandIMHO
    Спасибо за подсказку с переменной %COMPUTERNAME%. В данном случае  это как-раз то, что нужно.
    Но все же, могу ли я присвоить переменной значение возвращаемое другой командой (не обязательно hostname, это может быть, например, tracert)? Если да, то как?

    Всего записей: 4 | Зарегистр. 08-04-2007 | Отправлено: 00:48 04-10-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Dying_Fetus
    Я же тебе ответил - http://forum.ru-board.com/topic.cgi?forum=62&topic=11825&start=220#13
    Делаешь разбор вывода команды с помощью "for /f"

    ----------
    "В интернете есть все, но не всегда"

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 02:45 04-10-2007
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    как то решил протестить оператор for для разбора команды без кавычек и ключа /f
    оказалось, что можно использовать такую конструкцию
    for %%a in (dir/b *) do set "name=%%a"
    интересно, почему так?

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 03:54 04-10-2007 | Исправлено: Nagual, 04:02 04-10-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Nagual
    Не... нельзя
    Создается иллюзия работы команды "dir/b". Ключевую роль здесь играет символ "*", который for воспринимает как маску файлов и, соответственно, проходится по всем файлам в текущей директории.
    Если посмотреть внимательно на вывод той команды, которую ты привел, можно увидеть, что в переменную name сначало попадает значение  "dir/b", а потом, по одному, туда заносятся названия файлов.

    ----------
    "В интернете есть все, но не всегда"

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 04:27 04-10-2007
    Vadzim2003

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть папочка C:\temp  
    В ней много log-файлов. Нужно оставить самый "молодой" по времени. Остальные зазиповать. Как мне здесь уже подсказали ранее
    ---------------------------------------------------
    @echo off    
     
    SET ARCHIVE_SUFFIX=%DATE%  
     
    SET ARCHIVE_SUFFIX=%ARCHIVE_SUFFIX:.=%  
    SET ARCHIVE_SUFFIX=%ARCHIVE_SUFFIX:/=%  
    SET ARCHIVE_SUFFIX=%ARCHIVE_SUFFIX:-=%  
    SET ARCHIVE_SUFFIX=%ARCHIVE_SUFFIX: =%  
     
    for /F %%a in ('dir /B /OD *.log') do @set file=%%a
     
    "C:\Temp\7za455\7za" a -tzip log_%ARCHIVE_SUFFIX%.zip *.log -x!%file%
    -----------------------------------------------------
     
    Проблема, что 7zip не понимает команды "добавить в архив с перемещением", а другой архиватор использовать к сожалению не могу.  
     
    Как теперь удалить старые лог-файлы после их архивации?

    Всего записей: 5 | Зарегистр. 02-10-2007 | Отправлено: 11:28 04-10-2007
       

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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 4
    evle (19-03-2008 19:44): Лимит страниц.
    Задачи на bat-файлах 5


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru