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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    Как разобрать строку на подстроки, если заранее не известно кол-во разделителей?
    если разделители стандартные - пробел/табуляция/запятая, то
    Код:
    for %%a in (%var%) do echo %%a
     

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



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    res2001
    Цитата:
    Проверь и нам расскажешь  
    Дык проверял - не работает Но вдруг это я чего-то не знаю. А то как удобно было бы...

    Всего записей: 67 | Зарегистр. 07-08-2007 | Отправлено: 12:33 07-07-2010 | Исправлено: Engraf, 12:34 07-07-2010
    wolf0425



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

    Цитата:
    А то как удобно было бы...
    да чем удобнее чем  if "%%c" equ "" echo %%%%-c not defined

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 12:36 07-07-2010 | Исправлено: wolf0425, 12:37 07-07-2010
    Engraf



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    Цитата:
    for %%a in (%var%) do echo %%a  
    А я и не знал, что здесь можно строку использовать. for /? только про файлы говорит...
    Цитата:
    да чем удобнее чем...
    Тут я стормозил, пардон
     
    Добавлено:
    wolf0425
    Цитата:
    set /p aa=<file
    А вот что-то типа этого нельзя поправить, чтоб работало?
    Код:
    set /p count=<find /i /c "текст" file.ext

    Всего записей: 67 | Зарегистр. 07-08-2007 | Отправлено: 12:54 07-07-2010
    res2001



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

    Цитата:
    А вот что-то типа этого нельзя поправить, чтоб работало?
    set /p count=<find /i /c "текст" file.ext  

     
    for /f "tokens=*" %%a in ('find /i /c "текст" file.ext ') do set count=%%a
    Но в переменной count по выходе у тебя будет только значение из последней строки вывода find.
    Если надо обрабатывать каждую строку, то делай это внутри цикла.
    Кстати и при использовании set, если в файле больше одной строки, переменной присваивается последняя.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 14:21 07-07-2010
    yurkesha



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    res2001
    Цитата:
    при использовании set, если в файле больше одной строки, переменной присваивается последняя.
    При коде
    Код:
    set /p aa=<file
    Всегда присваивается только первая строка...


    ----------
    Всем непричастным рекомендую прогулки на свежем воздухе

    Всего записей: 2741 | Зарегистр. 15-12-2003 | Отправлено: 14:30 07-07-2010
    res2001



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

    Цитата:
    Всегда присваивается только первая строка...  

    точно, первая. Писал про for и что-то на set переклинило

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 14:45 07-07-2010
    ComradG



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    res2001
    Ты koi8-r разобрал?

    Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 23:31 07-07-2010
    BVV63



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всех приветствую.
    То, что For /F ... очень не любит двойные кавычки в In (...) я обнаружил давно (причём без разницы, используются в скобках апострофы или обратные кавычки). Помню, удивлялся, почему не работает (`"команда" ... "аргумент"`), оказалось, что внешние двойные кавычки (прилегающие к обратным) отбрасывались, получалось (`команда" ... "аргумент`) и ничего не работало. А как быть, ежели двойные кавычки действительно необходимы (присутствуют пробелы в команде)?
    P. S. Сейчас ещё попробую разделить ` и " пробелом, может поможет (хотя в том сомневаюсь).
     
    Добавлено:
    Да, не помогло. Есть ли выход?
     
    Добавлено:
    Кажется, нашёл выход. Всю строку облачить дополнительными двойными кавычками. Пусть самые внешние отбросятся, это не повредит.

    Всего записей: 3542 | Зарегистр. 17-08-2009 | Отправлено: 06:53 08-07-2010 | Исправлено: BVV63, 07:48 08-07-2010
    res2001



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

    Цитата:
    Ты koi8-r разобрал?

    Нарыл пример koi2unicode, но мне надо бы в 1251.
    Придется видимо самому накропать.
    Сейчас пока переключился на другое, но в ближайшее время вернусь к перекодировке.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 08:26 08-07-2010
    king_stiven

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

    Цитата:
    То, что For /F ... очень не любит двойные кавычки в In (...)  

     
    Экранировать знаком ^

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 08:33 08-07-2010
    Vitaly_Sigov

    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Здравствуйте, уважаемые форумчане.
    Подскажите, пожалуйста, каким образом через BAT-файл или какой-нибудь скрипт предоставить/отменить доступ к некоторой папке для некоторого пользователя?
    Т.е. есть расшаренная по сети папка - в ней куча простых папок. Вопрос:как предоставить/отменить доступ к некоторой из этих простых папок для некоторого пользователя ?

    Всего записей: 54 | Зарегистр. 23-01-2009 | Отправлено: 10:20 08-07-2010
    BVV63



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

    Цитата:
    Экранировать знаком ^

    Чтой-то не помогает. В простейших случаях, когда и так двойные кавычки прокатывают, всё хорошо и с ^. В более сложных - нет. Искать проги с длинными именами я не стал, просто взял один из фрагментов и добавил кавычки:

    Код:
    For /F "Skip=1 Tokens=* UseBackQ" %%A In (`^"Reg^" Query ^"HKLM\System\CurrentControlSet\Services\EventLog^" ^| ^"Find^" /I ^"HKEY_^"`) Do Echo %%A

    или

    Код:
    For /F "Skip=1 Tokens=* UseBackQ" %%A In (`^"Reg^" Query "HKLM\System\CurrentControlSet\Services\EventLog" ^| ^"Find^" /I "HKEY_"`) Do Echo %%A

    Не находит Reg.
    А вот так работает:

    Код:
    For /F "Skip=1 Tokens=* UseBackQ" %%A In (`Reg Query "HKLM\System\CurrentControlSet\Services\EventLog" ^| Find /I "HKEY_"`) Do Echo %%A

    Всего записей: 3542 | Зарегистр. 17-08-2009 | Отправлено: 10:22 08-07-2010 | Исправлено: BVV63, 10:25 08-07-2010
    NIKZZZZ



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

    Цитата:
    Есть ли выход?  

    Можно преобразовать длинные имена в короткие, надобность в кавычках отпадет.
     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 10:33 08-07-2010
    ComradG



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

    Код:
    for /f "skip=1 tokens=*" %%i in ('reg query^
     hklm\software\currentcontrolset\services\eventlog ^| findstr /i hkey') do echo %%i

    Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 10:36 08-07-2010 | Исправлено: ComradG, 10:36 08-07-2010
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    BVV63
    а так чем плохо - http://forum.ru-board.com/topic.cgi?forum=62&topic=19668&start=2020#6

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 10:43 08-07-2010
    res2001



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

    Цитата:
    Т.е. есть расшаренная по сети папка - в ней куча простых папок. Вопрос:как предоставить/отменить доступ к некоторой из этих простых папок для некоторого пользователя ?

    cacls /? тебе поможет

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 10:49 08-07-2010
    BVV63



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

    Цитата:
    А нафига вообще ты кавычки туда ставишь?

    Дык, хотел проверить совет king_stiven. В предыдущем посте я ошибочно указал на res2001. Конечно, в данном конкретном случае кавычки у Reg и Find не нужны (я написал, что поленился искать проги с длинными именами, либо Reg и Find засовывать в каталоги с длинными именами).
     

    Всего записей: 3542 | Зарегистр. 17-08-2009 | Отправлено: 10:50 08-07-2010 | Исправлено: BVV63, 10:51 08-07-2010
    mugil_cephalus

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

    Цитата:
    Reg и Find засовывать в каталоги с длинными именами).  

    зачем с длинными - достаточно пробела

    Код:
    c:\spa ce\reg.exe

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 10:53 08-07-2010
    BVV63



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

    Цитата:
    а так чем плохо

    Дак я тремя постами выше тоже написал, что как вариант можно всю строку дополнительно окружить двойными кавычками.
     
    Добавлено:
    mugil_cephalus

    Цитата:
    зачем с длинными - достаточно пробела

    Ну, я это и подразумевал. Просто неудачно выразился.
     
    Добавлено:
    NIKZZZZ

    Цитата:
    Можно преобразовать длинные имена в короткие, надобность в кавычках отпадет.

    Хм... Это как? Если длинное (имеющее пробелы) имя засунуть в переменную, так она же в цикле всё равно разъименуется.

    Всего записей: 3542 | Зарегистр. 17-08-2009 | Отправлено: 10:53 08-07-2010 | Исправлено: BVV63, 10:57 08-07-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