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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    wolf0425



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

    Цитата:
    нет. выводится сообщение об успешном завершении операции
    ну значит 1>nul 2>nul reg ...
    или 1>nul 2>&1 reg как тебе выше советовали для REG QUERY без поиска.

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



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

    Всего записей: 192 | Зарегистр. 25-01-2010 | Отправлено: 12:39 12-04-2010 | Исправлено: ivn1978, 17:27 19-04-2010
    ivn1978



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

    Всего записей: 192 | Зарегистр. 25-01-2010 | Отправлено: 19:52 12-04-2010 | Исправлено: ivn1978, 17:27 19-04-2010
    Strogg



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Стоит такая задача. Хочу, чтобы при запуске DVD (в данном случае игры Quake4) из autorun.inf перед установкой игры в файл Hosts, из батника записывалась бы блокирующая игровой сервер команда, а при повторном запуске DVD эта команда записи игнорировалась бы.
    Как мог накатал вот такой код, но в нем ошибки.  

    Код:
    @echo on
    @find /i "127.0.0.1   q4master.idsoftware.com" %SystemRoot%\system32\drivers\etc\hosts & if errorlevel 1 (echo Сервер уже заблокирован!)
    @find /i "127.0.0.1   q4master.idsoftware.com" %SystemRoot%\system32\drivers\etc\hosts & if exist     (здесь чего-то не хватает)      "127.0.0.1   q4master.idsoftware.com" goto exit
    @echo Завершаю работу...
    :exit /b 1
    @attrib -r -a -s -h %SystemRoot%\system32\drivers\etc\hosts
    @echo 127.0.0.1       q4master.idsoftware.com >> "%SystemRoot%\system32\drivers\etc\hosts"
    @attrib +r +a +s %SystemRoot%\system32\drivers\etc\hosts
    @echo Сервер заблокирован!

    Буду признателен за подсказку.

    Всего записей: 841 | Зарегистр. 08-05-2003 | Отправлено: 23:05 12-04-2010
    bredonosec



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

    Цитата:
    в моем коде задействованы %%i j 1-5 в верхнем куске и %%a в нижнем. исторически получилось.  

    дошло.  
    вопрос такой, в том, сотворенном http://forum.ru-board.com/topic.cgi?forum=62&topic=19668&start=838&limit=1&m=1#1
    - как-то странно отрабатывает.. я пауз напихал, выявил, что соединяет, маппит диск нормалоьно, но команду копирования - молчит неск секунд и сообщает, что путь не найден. Локальный файл на месте. удаленные папки тож. Что не так? синтаксис перепроверял по справочникам - думал, мож тупую ошибку сделал где.. - нет. не нашел.  
     
    днем не могу - тут на работе отрезали борду талпаёпы... (или изучать тоннелинг, чтоб им же работу делать)

    ----------
    Вопрос: 'Что человек курит?' как правило возникает не когда ты слышишь, как он дышит, а когда видишь, что он пишет
    Пропеллер играет роль вентилятора, он останавливается -пилот потеет
    Аськи нету.

    Всего записей: 16257 | Зарегистр. 13-02-2003 | Отправлено: 00:42 13-04-2010
    wolf0425



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

    Цитата:
    я пауз напихал, выявил, что соединяет, маппит диск нормалоьно, но команду копирования - молчит неск секунд и сообщает, что путь не найден.
    set "u_path=\\m:\documents and settings"
    ну и нафига там \\ в начале, если как диск замапил?
     
    также проверь как у тебя папка то называется - \Favorites\ или \Избранное\ (имеет смысл при ошибке копирования в первую - копировать во вторую)
     
     

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



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

    Всего записей: 192 | Зарегистр. 25-01-2010 | Отправлено: 01:23 13-04-2010 | Исправлено: ivn1978, 17:28 19-04-2010
    wolf0425



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

    Цитата:
    из батника записывалась бы блокирующая игровой сервер команда, а при повторном запуске DVD эта команда записи игнорировалась бы.  
    Как-то так:

    Код:
    @echo off
    chcp 1251 >nul
    type %SystemRoot%\system32\drivers\etc\hosts | find /i "q4master.idsoftware.com" | find "127.0.0.1" >nul && echo Сервер уже заблокирован! && exit
     
    1>>%SystemRoot%\system32\drivers\etc\hosts (echo 127.0.0.1    q4master.idsoftware.com) && echo Сервер заблокирован! || echo Ошибка записи!  
     
    возню с атрибутами я убрал - по умолчанию файлу флаг ридонли система не ставит, и тебе незачем.
    Если все же надо - верни, понятно куда.
     
     
    Добавлено:

    Цитата:
    а исполняемые файлы в корневой папке. как к ним прописать путь в батниках?
    в смысле - имя диска заранее неизвестно и полный путь прописать нельзя, известно только что диск тот же, что и у батников?
    ну и пиши %~d0\program.exe

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 01:36 13-04-2010
    Strogg



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

    Цитата:
    Как-то так:  
     
    Код:@echo off  
    chcp 1251 >nul  
    type %SystemRoot%\system32\drivers\etc\hosts | find /i "q4master.idsoftware.com" | find "127.0.0.1" >nul && echo Сервер уже заблокирован! && exit  
     
    1>>%SystemRoot%\system32\drivers\etc\hosts (echo 127.0.0.1    q4master.idsoftware.com) && echo Сервер заблокирован! || echo Ошибка записи!  
     

    Увы, код совсем не работает. Выдается последнее сообщение и запись не производится

    Всего записей: 841 | Зарегистр. 08-05-2003 | Отправлено: 09:43 13-04-2010
    wolf0425



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

    Цитата:
    Увы, код совсем не работает. Выдается последнее сообщение
    если ты перед этим использовал свой батник - ты лишних атрибутов файлу понаставил. снимай. в смысле - запусти один раз

    Код:
    attrib -r -a -s -h %SystemRoot%\system32\drivers\etc\hosts  


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



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

    Цитата:
    если ты перед этим использовал свой батник - ты лишних атрибутов файлу понаставил. снимай. в смысле - запусти один раз  

    Пробовал на файле без всяких атрибутов и результат - 0. Проверял пути, даже ставил кавычки и скобки для команд Echo, все одно - код не работает.

    Всего записей: 841 | Зарегистр. 08-05-2003 | Отправлено: 10:29 13-04-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Strogg  странно всё это, у меня исправно работает, сообщение "Ошибка записи!" пишется только когда не хватает прав для записи в %SystemRoot%\system32\drivers\etc\hosts
     
    У тебя операционка то какая?

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 10:40 13-04-2010
    Strogg



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

    Всего записей: 841 | Зарегистр. 08-05-2003 | Отправлено: 10:47 13-04-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Strogg аналогично. eng.  
    прав то на изменение файла хватает? что пишет строкой выше чем Ошибка записи! ?

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 10:56 13-04-2010
    Strogg



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    Включил echo on.
    Кроме ошибки записи больше ровным счетом ничего не пишет. Изменил кодовую страницу на 866 все без толку. Даже сменил русский текст на инглиш - не помогает.
    Убрал переменную %systemroot% и сменил на абсолютный путь, все то же.
    В конце концов тупо написал простейший батник  

    Код:
    echo test >> %SystemRoot%\system32\drivers\etc\hosts

    с перенаправлением сообщения в этот файл и оно записалось. Т.е. запись работает. Права то администраторские.
     

    Всего записей: 841 | Зарегистр. 08-05-2003 | Отправлено: 11:14 13-04-2010
    wolf0425



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

    Цитата:
    с перенаправлением сообщения в этот файл и оно записалось.  
    всё чудесатее и чудесатее.
    попробуй поменять порядок

    Код:
    (echo 127.0.0.1    q4master.idsoftware.com) 1>>%SystemRoot%\system32\drivers\etc\hosts && echo Сервер заблокирован! || echo Ошибка записи!
    не поможет - ещё и скобки убери
     

    Цитата:
    Включил echo on.
    Кроме ошибки записи больше ровным счетом ничего не пишет.
    т.е. запись куда-то шла - дополнительной ругани не было, но операция успешной не считалась. чудеса.
    echo on кстати неинтересен -  интересовало сообщение об ошибке от cmd, которого у тебя почему-то не пишется несмотря на отсутствие записи.
    надеюсь хоть ты код копипастом переносил и думать на ошибки и лишние пробелы незачем?

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



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Энд файнали... код работает Хотя все дело оказалось именно в лишних пробелах.

    Код:
    @type %SystemRoot%\system32\drivers\etc\hosts | find /i "q4master.idsoftware.com" | find "127.0.0.1" >nul && echo Server is already blocked! && exit 1  
    (здесь аж 3 пробела )
    >> %SystemRoot%\system32\drivers\etc\hosts (echo 127.0.0.1   q4master.idsoftware.com) && echo Server blocked! || echo Write error!

    Но это не суть важно, самое главное все работает и на сердце легко. Большое спасибо

    Всего записей: 841 | Зарегистр. 08-05-2003 | Отправлено: 12:11 13-04-2010
    tails80486



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    нужен скрипт который будет добавлять к файлам вида page.*** строку вида  
    ^<A HREF="page.***+1"^>next...^</A^>
    вместо звездочек номер файла (000 001 итд)

    Всего записей: 68 | Зарегистр. 23-11-2009 | Отправлено: 16:18 13-04-2010
    wolf0425



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

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

    Цитата:
    добавлять к файлам вида page.*** строку вида  
    строку то куда добавлять? просто в конец дописать? и ^<A  - это именно те символы, что должны получиться в файле, ^ там не лишний?
     
    и под "page.***+1" - принимаются именно циферки с плюсиком или расширение имя следующего по счету файла?
    т.е. какая должна получиться последняя строка файла page.345 ??
     

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 16:26 13-04-2010 | Исправлено: wolf0425, 16:32 13-04-2010
    tails80486



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    нет не обязательно
     
    да в конец, ^ что бы экранизировать символы >,<

    Всего записей: 68 | Зарегистр. 23-11-2009 | Отправлено: 16:32 13-04-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