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

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

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

vu1tur (04-09-2010 17:46): http://forum.ru-board.com/topic.cgi?forum=62&topic=21297  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 12:40 25-01-2010 | Исправлено: bomzzz, 13:37 20-08-2010
    Mark_Titov



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ...Это будет единый код, там помимо этого всевозможные арифметические вычисления и этот батник будет работать круглые сутки (как сервис) не выключаясь...

    Всего записей: 387 | Зарегистр. 12-04-2010 | Отправлено: 09:47 02-06-2010
    res2001



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

    Код:
     
    set DAY=1
    set MONTH=1
    set YEAR=1
    for /F "delims=.-/ tokens=1,2,3" %%i in ("%DATE%") do (
        set DAY=%%i
        set MONTH=%%j
        set YEAR=%%k
    )
     

     
    Ну а дальше проверка:
     

    Код:
     
    if %DAY% EQU 01 (
         твой код для расчета
    )
     

     
     
    Добавлено:
    время можно аналогичным образом разобрать - есть соответствующая переменная %TIME%

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 10:04 02-06-2010
    us0r



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    А если файлов много? (Но это так- лирика).

    Всего записей: 406 | Зарегистр. 06-12-2007 | Отправлено: 12:21 02-06-2010
    Free_Soft



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

    Всего записей: 1536 | Зарегистр. 19-04-2010 | Отправлено: 12:49 02-06-2010 | Исправлено: Free_Soft, 12:49 02-06-2010
    Mark_Titov



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

    Всего записей: 387 | Зарегистр. 12-04-2010 | Отправлено: 12:56 02-06-2010
    wolf0425



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

    Цитата:
    wolf0425
    А если файлов много? (Но это так- лирика).
    а если файлов много - пишется for
     
    с советами по дате там чего-то перемудрили, день месяца это в простых случаях просто %date:~0,2%, а в сложных - надо очень сильно извращаться чтоб его гарантированно получить и рецепт res2001 тоже сработает не лучше.
    простой случай - это когда в системе гарантировано формат даты русский.
    сложные случаи - это когда заранее неизвестно какой формат даты будет на момент исполнения батника в системе, извращений как разрулить эту тему попридумано много, простых вариантов нет.
     
    Добавлено:
    Free_Soft
    Цитата:
    Подскажите, можно ли в батнике создать команду на копирование текстового отрезка в буфер обмена? Другими словами, чтобы после отработки батника в буфере обмена оказался кусок текста.  
    nircmd тебе в помощь, запихивать в клипбоард строку или файл он умеет.

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 13:04 02-06-2010 | Исправлено: wolf0425, 13:44 02-06-2010
    sjsash

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

    Цитата:
    Это я так понял форматирование диска А без запроса. Например сравнение файлов командой Comp с автоматическим ответом после сравнения "n" (типа больше не сравнивать файлы) будет код  
    Код: echo n | comp "C:\logfile.log" "D:\Log\logfile1.log" ???

    Я что хотел спросить, команду
    Код:
     echo "символ отвеа" | "оператор"
    можно прикрутить к любому оператору который требует ответа от пользователя или нет?

    Всего записей: 14 | Зарегистр. 13-11-2009 | Отправлено: 13:46 02-06-2010
    us0r



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    sjsash
    Ну... По моему зависит от сожности. Для проверки- создай ярлык батником.
    В простых ситуациях вроде везде.

    Всего записей: 406 | Зарегистр. 06-12-2007 | Отправлено: 14:20 02-06-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    sjsash нет, не к любому - некоторые утилиты хотят получить ввод именно с клавиатуры, а не с stdin, но это обычно только к паролям и прочей безопастности относится, и не ко всем.
    т.е. с большинством утилит способ работает, но проверять - надо.

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 14:27 02-06-2010 | Исправлено: wolf0425, 15:05 02-06-2010
    us0r



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

    Цитата:
    А если файлов много? (Но это так- лирика).  
     
    а если файлов много - пишется for

    А при таком способе могут возникнуть проблемы?
    Просто зачем гонять цикл, когда система наткнувшись на файл(ы) уже будет знать что делать.

    Всего записей: 406 | Зарегистр. 06-12-2007 | Отправлено: 15:14 02-06-2010 | Исправлено: us0r, 15:16 02-06-2010
    wolf0425



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

    Цитата:
    Просто зачем гонять цикл, когда система наткнувшись на файл(ы) уже будет знать что делать.
    а система точно спросит что делать только один раз, а не отдельно на каждый файл?

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 15:24 02-06-2010
    us0r



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всё. Ошибку понял.

    Всего записей: 406 | Зарегистр. 06-12-2007 | Отправлено: 15:56 02-06-2010
    BagaBaga

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    как через echo передать символ "ввод"
    Просто при
    echo y | a.exe
    a.exe бесконечно ждет ввода "enter".
     
    ps
    a.exe  < tmp.txt  
    работает (если временный файл содержит y и "ввод"), но костыль есть костыль

    Всего записей: 463 | Зарегистр. 14-11-2005 | Отправлено: 16:02 02-06-2010
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    BagaBaga
    Второй вариант вовсе не костыль, практически это то же самое что и с использованием echo, но более универсальный способ, как ты сами уже убедился.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 16:15 02-06-2010
    Mark_Titov



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Кто подскажет как узнать удаленно залогиненного пользователя в домене, зная имя компа?
    Извиняюсь что не в тему...

     
    ...Прошу прощения - разобрался

    Всего записей: 387 | Зарегистр. 12-04-2010 | Отправлено: 16:38 02-06-2010 | Исправлено: Mark_Titov, 16:49 02-06-2010
    sjsash

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

    Цитата:
    Я что хотел спросить, команду  
    Код: echo "символ отвеа" | "оператор"  
     
    можно прикрутить к любому оператору который требует ответа от пользователя или нет?

    Всем спасибо, все понял

    Всего записей: 14 | Зарегистр. 13-11-2009 | Отправлено: 17:36 02-06-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    BagaBaga
    Цитата:
    Просто при
    echo y | a.exe
    a.exe бесконечно ждет ввода "enter".
    a.exe  < tmp.txt  
    работает
    проверь все же  
    echo y| a.exe
    может пробел мешается?

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 18:15 02-06-2010
    BagaBaga

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    echo y|a.exe (без пробела до и после |)
    ведет себя точно так же

    Всего записей: 463 | Зарегистр. 14-11-2005 | Отправлено: 18:45 02-06-2010
    mugil_cephalus

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

    Цитата:
    echo y|a.exe (без пробела до и после |)  
    ведет себя точно так же

    а какой вывод у  

    Код:
    c:\>a.exe

    ??
    попробуй

    Код:
    (echo.y)|a.exe

     
    Добавлено:
    wolf0425
    ты решил задачу с бифуркацией на вывод сообщения юзеру или выполнением дефолного сценария ветвления скрипта?
    1) любопытно, каким способом  
    2) вспомил, без году неделя, что doskey "ловит" stdin в процессе интерпретации кода консолью

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 07:43 03-06-2010 | Исправлено: mugil_cephalus, 08:13 03-06-2010
    wolf0425



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

    Цитата:
    ты решил задачу с бифуркацией на вывод сообщения юзеру или выполнением дефолного сценария ветвления скрипта?  
    ?????????

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 12:43 03-06-2010
       

    Страницы: 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 » Операционные системы » Microsoft Windows » Задачи на bat-файлах 8
    vu1tur (04-09-2010 17:46): http://forum.ru-board.com/topic.cgi?forum=62&topic=21297


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru