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

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



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

    Цитата:
     Set RemoteUser_%%A=%%A  

    посмотри мой пример, там только одна переменная, куда складываются все имена пользователей.

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



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    jek1976
    Ну... Кагбэ в зависимости от колва файла... Если файла over 9000 то может секунду- другую и подумает... Но для примера скорости обработки напиши в консоли dir - и всё увидишь сам...
    А спецметки в папке- это как? Метку времени самой папки- можно попробовать... Но тебе нужны конкретные файлы, что бы не гонять лишний траффик... Вобщем можно сделать просто и быстро (нужное подчеркнуть).

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



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

    Цитата:
    Зачем плодить переменные?


    Цитата:
    посмотри мой пример, там только одна переменная, куда складываются все имена пользователей.

    Резонно. А у переменных какое ограничение на длину, точно влезут все пользователи в одну?

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



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    BVV63
    Ограничение есть, где-то в хелпе встречал, по моему, 8 Кб. Сейчас не могу найти.
    Нюансы в таком варианте будут только если у тебя имена пользователей с пробелами, типа "Вася Пупкин", тогда надо будет поправить set, вставить разделитель не пробел, ";" скажем и во втором форе его прописать.

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



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

    Цитата:
    hstart.exe положи в корень и вот код батника autorun.inf , в котором пропиши запуск батника vbs.bat , который запустит твой vbscript
    [autorun]  
    open=hstart /NOCONSOLE \vbs.bat  
     
    vbs.bat ( положи тоже в корень )  
     
    Код:
    cscript //nologo \1.vbs

     
     
     
    Всё так сделал, запускаю hstart, а он:
     

     
     
    На флэшке:
     
    mpr\
    vbs.bat
    autorun.inf
    1.vbs
    hstart.exe
     
     
     
    Ммм!?

    Всего записей: 2030 | Зарегистр. 19-05-2008 | Отправлено: 15:09 02-07-2010 | Исправлено: boy999, 16:36 02-07-2010
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    boy999
    наверное в авторане нужно эту строчку так сделать:

    Цитата:
    open=hstart /NOCONSOLE vbs.bat  

     
     
    Добавлено:
    All
    Народ! У  меня сегодня после каждого нажатия на кнопку отправить выдается страница с ошибкой, но сообщение при этом отправляется. Это у всех так?
     
     
    Добавлено:
    Кропал тут батник для собственных нужд. Было в нем 2 вложенных цикла, во втором надо было разделить первую итерацию и остальные. Получилась такая конструкция

    Код:
    for %%a in (..) do (
    set \a "count=0"
    for %%b in (..) do if !count! eql 0 (set /a "count+=1 & echo 1) else (echo 2)
    )

    В такой конструкции все время выдается ошибка о неожиданном появлении eql.
    Заменил условие на if !count! lss 1 - сразу все заработало.
    Вот такой вот финт у cmd.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 15:46 02-07-2010 | Исправлено: res2001, 16:04 02-07-2010
    boy999



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

    Цитата:
    выдается страница с ошибкой, но сообщение при этом отправляется. Это у всех так?  
     

     
    АГА!  глючит, сцуко.
     
     
    Добавлено:

    Цитата:
    open=hstart /NOCONSOLE vbs.bat  

     
    Всё равно.....втыкаю флэшку - ничего не происходит((.
     
    Ручной запуск батника или скрипта запускает MBR, но не в скрытом виде.
     

    Всего записей: 2030 | Зарегистр. 19-05-2008 | Отправлено: 16:37 02-07-2010
    jek1976



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    us0r
    Цитата:
    Вобщем можно сделать просто и быстро (нужное подчеркнуть).

    Давай "просто".

    Всего записей: 1057 | Зарегистр. 15-04-2005 | Отправлено: 18:21 02-07-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    res2001
    Цитата:
    for %%a in (..) do (
    set \a "count=0"
    for %%b in (..) do if !count! eql 0 (set /a "count+=1 & echo 1) else (echo 2)
    )
    В такой конструкции все время выдается ошибка о неожиданном появлении eql.
    Заменил условие на if !count! lss 1 - сразу все заработало.  
    так и должно было ругаться. чего ты хотел, когда eql вписывал - чтоб на == проверилось? так это пишется не EQL а EQU (переводчику русского хэлпа можешь персональный привет послать, авось икнет и на лестнице запнется)

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



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

    Цитата:
    так это пишется не EQL а EQU (переводчику русского хэлпа можешь персональный привет послать, авось икнет и на лестнице запнется)

    Блин, вот уроды, а я пол часа убил, все ошибку у себя искал. Исправлю на equ. Спасибо за подсказку.
    Почему то раньше не пользовался сравнением на равенство.
     
    Добавлено:
    boy999

    Цитата:
    Всё равно.....втыкаю флэшку - ничего не происходит

    Видимо в виндах автозапуск с флэшки выключен.

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



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите пожалуйста, где загвоздка?
    Почему вызов call :PROC происходит 2 раза с теми же параметрами (каждая строка из файла выводится дважды)?

    Код:
    set Num=50
    for /L %%i in (1,1,%Num%) do (
      for /F "usebackq tokens=1,* delims=:" %%A in (`findstr /B %%i: file.txt`) do (
        call :PROC "%%B" temp2.txt
      )
    )
    goto :EOF
     
    :PROC
    echo %1

    Пояснение:

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



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

    Цитата:
    Почему вызов call :PROC происходит 2 раза с теми же параметрами (каждая строка из файла выводится дважды)?  
    а у меня - единожды. точно ничего не перепутал в условиях?

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 20:39 02-07-2010 | Исправлено: wolf0425, 20:40 02-07-2010
    boy999



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

    Цитата:
    в виндах автозапуск с флэшки выключен.

     
    Как включить!?

    Всего записей: 2030 | Зарегистр. 19-05-2008 | Отправлено: 07:41 03-07-2010
    mugil_cephalus

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

    Цитата:
    Видимо в виндах автозапуск с флэшки выключен.

    кажется он дефолтно - включен
    не знаю, у меня с cd автозапускается  
    тоже самое с floppy - не запучкается  
    флешки под рукой нет, но недавно вирус с таким же кодом пытался запуститься с флешки, но его norton перехватил
     
    попробуй :
    [autorun]
    open=explorer /e,%systemroot%
    icon=myuserpic.ico
    и кинь в корень файл myuserpic.ico
     
    p.s.
    hstart.exe запускать не нужно, должен сработать autorun ( а если autorun сработает праильно - мы вообще ничего не увидим , как ты и хотел - hidden mode ; если autorun - работает , попробуй для отладки ключ /msg - если все ок - потом удалишь этот ключ hstart'a )
    p.p.s.
    и, вообще, какая у тебя ось ?

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



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

    Цитата:
    [autorun]  
    open=explorer /e,%systemroot%  
    icon=myuserpic.ico
    и кинь в корень файл myuserpic.ico  

     
    Сделал так в авторане, и что?
    Винда - ХР sp3.

    Всего записей: 2030 | Зарегистр. 19-05-2008 | Отправлено: 10:36 03-07-2010
    Engraf



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

    Цитата:
    а у меня - единожды. точно ничего не перепутал в условиях?  

    Вот точный код батника
    Вот кусок файла, из к-го берутся строки
    А это вывод консоли во время исполнения батника
     
    Вообщем, не знаю что и думать... Даже перегрузил комп на всякий - не помогло.

    Всего записей: 67 | Зарегистр. 07-08-2007 | Отправлено: 11:54 03-07-2010 | Исправлено: Engraf, 11:55 03-07-2010
    Elroir



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

    Цитата:
    как же сделать включалку отключалку для видимости зарегистрированных расширений

    Посмотри здесь

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 12:04 03-07-2010
    res2001



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

    Цитата:
    Вот кусок файла, из к-го берутся строки

    В приведенном куске нет строки, которую ты ищешь в батнике. Ну да ладно.
    У меня выводится по одной строке.
    Может ты в начало батника вставишь @echo off и после этого покажешь вывод?

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 12:41 03-07-2010
    Engraf



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

    Цитата:
    Может ты в начало батника вставишь @echo off и после этого покажешь вывод?

    собственно вот...
     
    Добавлено: кодировка файла-источника UTF-8, может тут где-то собака зарыта?

    Всего записей: 67 | Зарегистр. 07-08-2007 | Отправлено: 13:06 03-07-2010 | Исправлено: Engraf, 13:17 03-07-2010
    res2001



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

    Цитата:
    Как включить!?  

    http://social.technet.microsoft.com/Forums/ru-RU/xpru/thread/220f7a41-85b7-4cde-bdd3-339407a789c6
    Engraf
    Забавно и не понятно. Такое впечатление что у тебя эхо валит и в stdout и в stderr одновременно, что в итоге дает такой вот эффект.
    попробуй так в качестве эксперимента:

    Код:
    :DELNUM
    1>>ok.txt 2>>err.txt echo %1
     

    и расскажи что будет в файлах ok.txt и err.txt.
    Ну и еще в качестве эксперимента, сделай другой батник с любым выводом echo.
    Будут в этом случае двойные строки?

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 13:15 03-07-2010 | Исправлено: res2001, 13:16 03-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