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

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

    Цитата:
    Это я думал. Места мало. Реально мало. Под факсом живёт древнючий ноут с хардом в 4 гига.
    а нафиг нужно место для перекладывания файла с одного места на соседнее в пределах диска? Тем более что это соседнее место у тебя будет периодически чиститься винраром (хотя нафига паковать тиф я не понял  - вента несжатые тифы пишет, что-ли?)
     
    строчку кода в первом сообщении предыдущей страницы - видишь?
    с учетом замены pdf на tif  - это примерно всё что тебе реально было нужно
    ну разве что ещё куда-то лог операций пописать, если есть лишнее время на его чтение.
     

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

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

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

    Ну как-то так....

    Код:
    @ECHO OFF
    :main
    @CLS
    ::{ Рисуем меню
    ECHO.Пункт меню 1
    ECHO.Пункт меню 2
    ECHO.Пункт меню 3 (Выйти)
    ECHO.Пункт меню звездочка [* ]
    ::{ Рисуем меню
     
    ::{ ждем ввода с клавиатуры
    SET mainprompt=x && SET /p mainprompt= Выберите пункт меню:
    ::} ждем ввода с клавиатуры
     
    ::{ Проверяем правильность ввода
    :_1
    IF %mainprompt%==1 (CALL :point) ELSE (GOTO :_2)
    :_2
    IF %mainprompt%==2 (GOTO :two) ELSE (GOTO :_3)
    :_3
    IF %mainprompt%==3 (EXIT) ELSE (GOTO :_*)
    :_*
    IF %mainprompt%==* (GOTO STAR) ELSE (GOTO :ERROR)
    ::} Проверяем правильность ввода
     
    ::{Пример с точкой в батнике
    :point
    ECHO.Выбрана 1 опция
    PAUSE
    GOTO :main
     
    :two
    ECHO.Выбрана 2 опция
    PAUSE
    GOTO :main
    ::}Пример с точкой в батнике
     
    ::{выбор по звездочке
    :STAR
    ECHO.Вы Ввели звездочку
    PAUSE
    GOTO :main
    ::}
     
    ::{ Ошибка
    :ERROR
    ECHO.Ошибка ввода!
    PAUSE>nul
    GOTO :main
    ::} Ошибка

     
    Добавлено:
    us0r

    Цитата:
    for /f "tokens=2 delims==" %%n in (netsh interface ip show address | findstr \".*\") do echo %%n

    Попробуйте так :)

    Код:
    for /f "tokens=3 delims= " %%n in ('netsh interface ip show address ^| findstr \".*\"') do (ECHO.%%n)

    Всего записей: 27 | Зарегистр. 11-03-2010 | Отправлено: 20:51 07-04-2010 | Исправлено: METAJIJI, 21:49 07-04-2010
    Maikl_relax

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

    Цитата:
    В некую папку в хаотичном порядке падают некие файлы. (Факс на модеме)  
    Мне нужно организовать копирование этих файлов на сетевой диск.

    Я чет не понял а штаный Клиент ВентаФаксовский поставить Серетарю никак- там все удобнее гораздо! Также на Серверной чсти можно организовать штано по мылу отправлять ...
     
    king_stiven

    Цитата:
    Нда, после HD видео как то уже не комильфо.

    Аха не цепляет абсолютно... а по телнету вообще тошниловка

    Всего записей: 8 | Зарегистр. 27-01-2010 | Отправлено: 22:13 07-04-2010 | Исправлено: Maikl_relax, 22:15 07-04-2010
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    us0r
    cd\
    setlocal enabledelayedexpansion
    chcp 1251>nul
    for /f "skip=1 tokens=1-2* delims= " %%a in ('netsh interface ip show address') do (
    set "var=%%~c"
    set "var=!var:"=!"
    goto:exit
    )
    :exit
    echo.%var%
    pause
     
    а... у тебя много lan'ov - тогда
    cd\
    setlocal enabledelayedexpansion
    chcp 1251>nul
    for /f "tokens=1-2* delims= " %%a in ('netsh interface ip show address ^|find /i "настройка"') do (
    set "var=%%~c"
    set "var=!var:"=!"
    goto:exit
    )
    :exit
    echo.%var%
    pause

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 23:05 07-04-2010 | Исправлено: mugil_cephalus, 23:17 07-04-2010
    gryu



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

    Цитата:
    штаный Клиент ВентаФаксовский поставить Серетарю никак

    Есть такая фигня. Называется "лицензия".  
    У нас в наличии модем Zyxel и как следствие 5-я Хоум версия ВентаФАХ.
    Только не говорите что у "соседей в ветке" можно взять ломаную. Не тот случай.    
    king_stiven
    Спасибо. Буду посмотреть завтра.

    Всего записей: 13033 | Зарегистр. 15-03-2006 | Отправлено: 23:14 07-04-2010 | Исправлено: gryu, 23:15 07-04-2010
    bredonosec



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    вопрос: а как можно выцепить в переменную имя акка, под которым на машине сейчас сидит человек?  
    Общая задача - положить именно в этот акк в закладки одну линку (в all users не катит - не видна там). На каждой машине из списка.  
    условия - домен, есть АД серв, доступ к нему ограниченный.  
    Как переменную использовать - думаю, не возникнет трудностей, но как получить - не представляю.  
     
    на самый крайний случай можно вручную набрать список имен и компов, и по нему пускать идти перебором, но не хочется этого делать.

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

    Всего записей: 16257 | Зарегистр. 13-02-2003 | Отправлено: 11:53 08-04-2010
    gryu



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

    Всего записей: 13033 | Зарегистр. 15-03-2006 | Отправлено: 12:13 08-04-2010 | Исправлено: gryu, 12:38 08-04-2010
    us0r



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

    Цитата:
    METAJIJI

    Почему tokens=3? Разделителемь является пробел?
     
    mugil_cephalus

    Цитата:
    а... у тебя много lan'ov - тогда  
    cd\  
    setlocal enabledelayedexpansion  
    chcp 1251>nul  
    for /f "tokens=1-2* delims= " %%a in ('netsh interface ip show address ^|find /i "настройка"') do (  
    set "var=%%~c"  
    set "var=!var:"=!"  
    goto:exit  
    )  
    :exit  
    echo.%var%  
    pause

     
    Выводит имя только последнего интерфейса

    Всего записей: 406 | Зарегистр. 06-12-2007 | Отправлено: 12:39 08-04-2010 | Исправлено: us0r, 12:41 08-04-2010
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    us0r
    cd\  
    setlocal enabledelayedexpansion  
    chcp 1251>nul
    set "cnt=1"  
    for /f "tokens=1-2* delims= " %%a in ('netsh interface ip show address ^|find /i "настройка"') do (  
    set "vartmp=%%~c"  
    set "var!cnt!=!vartmp:"=!"  
    set /a cnt=!cnt!+1
    )  
    set var
    pause

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



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    bredonosec
    Цитата:
    вопрос: а как можно выцепить в переменную имя акка, под которым на машине сейчас сидит человек?  
    если запускать на машине от юзера - то %USERNAME%
    если просто с компа сетевого админа - то посканировать на юзеровом компе "C:\Documents and Settings\*\NTUSER.DAT" и найти самый свежий - с 99% вероятности это будет у юзера в каталоге, особенно если служебные аккаунты отфильтровывать.
    могу порыться - где-то готовый код был. или сам по мессагам поищи - его тут уже дважды постил.

    Цитата:
    Общая задача - положить именно в этот акк в закладки одну линку
    а положить всем юзерам компа - чем-то плохо?
    Или класть юзеру при логине.

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



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Здравствуйте,решил опять запостить новую проблему в эту замечательную тему, т.к. знаю-здесь люди в беде не бросят!!! Нужна пара батников,чтобы их по компам раскидать:
     
    1.Чтоб запретил компу быть мастер браузерами,запретил ему участвовать в выборах и отключил службу "обозреватель компьютеров".
     
    2. Наоборот-дал компу роль Единственного мастер браузера и вкл. службу "обозреватель компьютеров".
     
    Заранее благодарен!!!!

    Всего записей: 110 | Зарегистр. 29-01-2009 | Отправлено: 13:55 08-04-2010
    Lutvun



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Нужно из батника открыть телнет сессию и не закрывая её в цыкле скидывать туда команды с переменными.
    Например: Запустил батник выполнил команду: отправить в телнет %время%. Через секунду опять команда: отправить в телнет %время%. И так постоянно!

    Всего записей: 286 | Зарегистр. 22-11-2005 | Отправлено: 14:19 08-04-2010
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Lutvun
    http://forum.ru-board.com/topic.cgi?forum=5&topic=33080&start=20#19

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 14:22 08-04-2010
    bredonosec



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

    Цитата:
    с компа сетевого админа

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

    лучше таки посмотри, я даж не знаю по каким ключевым словам фильтровать поиск(  

    Цитата:
    положить всем юзерам компа - чем-то плохо?  

    в принципе, можно, но... это вроде через листинг папки докс-н-сеттингс, сброс списка в лог, каждую строку лога подставлять в промежуточную переменную в путь к закладкам, и пихать?  

    Цитата:
    Или класть юзеру при логине.

    о! а как? (на потом точно еще пригодится метод)

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

    Всего записей: 16257 | Зарегистр. 13-02-2003 | Отправлено: 14:34 08-04-2010
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    bredonosec
    начало - http://forum.ru-board.com/topic.cgi?forum=62&topic=17154&start=1200#5
    конец - http://forum.ru-board.com/topic.cgi?forum=62&topic=17154&start=1220#4

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 15:05 08-04-2010
    wolf0425



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

    Цитата:
    я даж не знаю по каким ключевым словам фильтровать поиск(
    как так не знаешь - NTUSER.DAT
     
    локальный поиск последнего логинившегося на компе юзера, из не прописанноых в список исключений:

    Код:
    set olduser=
    cd /d "C:\Documents and Settings\" && for /d %%i in (*) do (
        pushd "%%~i"  
        for /f %%j in ('dir /b /ah ntuser.dat 2^>nul') do for /f "tokens=1-5 delims=.: " %%1 in ("%%~tj") do set "ntuser-%%3%%2%%1%%4%%5=%%~i"
        popd
    )
    for /f "tokens=3 delims=-=" %%a in ('set ntuser ^| sort /r') do find /i "#%%~a" %~s0 >nul || set "olduser=%%~a" && goto:selected
     
    ну и сам перепиши без cd, c сетевым путем типа \\usercomp\c$\documents..
    если у самого будут сложности переписать - спроси, код кривоватый как раз потому что переписывать когда-то лень было
     

    Цитата:
    это вроде через листинг папки докс-н-сеттингс, сброс списка в лог, каждую строку лога подставлять в промежуточную переменную в путь к закладкам, и пихать?  
     
    типа такого:
    Код:
    set "u_path=\\usercomp\c$\documents and settings"
    for /f "delims=" %%a in ('dir /b /ad-s-h "%u_path%\*"') do copy /b c:\nyjnii.url "%u_path%\%%a\Favorites\"
    в "All Users" тоже скопирует, так что если не нужно  - прилепи проверку.
     
    Добавлено:

    Цитата:

    Цитата:
    Или класть юзеру при логине.
    о! а как? (на потом точно еще пригодится метод)
    а групповые политики тебе зачем даны в AD?

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



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

    Цитата:
    а групповые политики тебе зачем даны в AD?  

    менять их не имею доступа. Ограниченный админ.  
     
    попробовал с pcloggedon (просто локально, бат в одну строку- провериться на кошках, то есть, на себе)
     
    psloggedon.exe -l \\%1 | find /I "mojDomen.lt\" >> "c:\path_to_folder\lists.txt"  
     
    - она у меня авторское соглашение выстреливает.  
    При повторных - просто пустой лог файл оставляет.  
     

    Цитата:
    если у самого будут сложности переписать - спроси, код кривоватый как раз потому что переписывать когда-то лень было  

    тут не совсем улавливаю пару вещей: можно ли такой метод юзать, когда доступ только по паролю ко всем компам, (я пока пользовал метод с указанием логина, пароля, нет юз как диск такой-то, потом отключить и подключить следующий им же. )
    И если можно, то какая граница использования %i - ведь туда текущее имя компа подставляться будет, а тут иное описано этой переменной.  
    И что означает переменная j


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

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



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

    Цитата:
    менять их не имею доступа. Ограниченный админ.  
    своих добавить на свою часть компов - тоже не можешь? печально тогда.
    можно приткнуть батник в "C:\Documents and Settings\All Users\Start Menu\Programs\Startup\" - горбатенько только это...
     

    Цитата:
    попробовал с pcloggedon  
    afair это тулза несколько для другого - посмотреть кто к зашаренным ресурсам законнекчен.
     
    в любом случае - что пишет psloggedon -l \\totkomp если его просто в консоли запускаешь? ты %1 не забываешь давать?
     

    Цитата:
    можно ли такой метод юзать, когда доступ только по паролю ко всем компам,
    э... какой по паролю, если у тебя компы в АД? тебе твоего текущего логина хватает на тех компах залогиниться (с доступом как админу)?  
    пропиши у эксплорера в строку \\totkomp\с$  - пустит или спросит что?
    Если не хватает и знаешь только пароль юзера администратор (локальный) от всех компов - проще и у себя батник запускать от администратора (runas /?), чтобы с паролями винды сами через АД разбирались.
    Но в общем-то несложно и на монтирование/размонтирование переписать, в данном варианте - переписывать пожалуй меньше будет, тут на cd/pushd завязано.
    Это только обычно - незачем с ним заморачиваться в АД, прямые сетевые имена - удобнее.
     

    Цитата:
    какая граница использования %i
    %%i это переменная цикла в верхней строке, определена пока он выполняется. имя каталога пользователя.

    Цитата:
    И что означает переменная j  
    тут %%j это переменная цикла второй вложенности - for /f %%j in ('dir...
    всегда равна ntuser.dat, а вот её путь и время - меняются.
    ты вообще for /? читал, или тебе и про переменные %%1 .. %%5 тоже нужны пояснения в контексте данного кода?
     
     

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



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    пока сделал "по пути наименьшего сопротивления"- тестирую....  
     
     
    Добавлено:

    Цитата:
    Если не хватает и знаешь только пароль юзера администратор

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

    Цитата:
    своих добавить на свою часть компов - тоже не можешь?  

    именно. Уже пробовал летом.. закрыто.  

    Цитата:
    %%i это переменная цикла в верхней строке, определена пока он выполняется.  

    то есть, если верхний цикл будет перебор компов, то тут надо вторую (j), а вместо второй - третью?  
     
    (остальное потом, день кончился, домой))

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

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



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

    Цитата:
    то есть, если верхний цикл будет перебор компов, то
    то у всех циклов в пределах вложенности переменные должны быть разные. у просто соседних - могут пересекаться. Какие буковки использовать - назначаешь сам.  
    допустимые символы для переменных a-zA-Z0-9. регистр учитывается
     
    в моем коде задействованы %%i j 1-5 в верхнем куске и %%a в нижнем. исторически получилось.

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 16:50 09-04-2010 | Исправлено: wolf0425, 16:52 09-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