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

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

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

vu1tur (29-07-2011 12:47): Задачи на bat-файлах 11
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 11:53 09-01-2011 | Исправлено: mazafakermazafaka, 11:22 04-06-2011
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Valdon
    А что это за ключ такой?
    Если пользуешься mstsc - стандартным терминальным клиентом виндов, то у него нет такого ключа.
     
    Добавлено:
    superman md
    Запускается Windows Loader.exe из папки с батником
    %~dp0"Windows Loader.exe" /silent /preactivate  
    Устанавливается текущим каталогом, каталог, где лежит батник
    cd %~dp0  
    В текущем каталоге снимаем атрибуты рид-онли, архивный, скрытый, системный со всех файлов
    attrib -R -A -S -H *.*  
    перезагружаем винду с таймером в 5 сек.
    SHUTDOWN /R /T 5  
    удаляем каталог "%WINDIR%\Setup\Scripts" со всем содержимым.
    RMDIR /S /Q "%WINDIR%\Setup\Scripts"

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 08:42 29-06-2011
    Valdon



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    res2001, есть такой ключ, начиная с версии RDP 6.1 он заменен на /admin. Почитать можно  например, здесь или запусти  mstsc /?

    Всего записей: 428 | Зарегистр. 25-07-2005 | Отправлено: 09:23 29-06-2011
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Valdon
    ага, это есть
    Кароче, есть переменная окружения %CLIENTNAME%.
    В случае когда заходишь в терминале с ключом /admin она либо не устанавливается, либо устанавливается в имя сервера на который заходишь (проверял на ВинХП и Вин2003). Когда заходишь без /admin переменная устанавливается в имя клиентского компа с которого заходишь.
    Вот так и различать.
    При этом, чтоб отличить что ты зашел именно через терминал, а не из консоли можно анализируя переменную %SESSIONNAME%, когда в терминале она равна "RDP-Tcp#NN", где NN - это порядковый номер текущей РДП сессии, если заходишь с консоли, то она равна "Console".

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 09:48 29-06-2011 | Исправлено: res2001, 10:08 29-06-2011
    FantoMax22

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всех приветствую!
     
    Помогите доделать батник. Основная часть есть:
     
    dsadd user "..."
    dsmod group  "..."
    dsmod user "..."
     
    Суть в том, чтобы при клике ярлыка батника открывалось окно командной строки, где будут воодится mac-адрес и следом описание. И нужно чтобы после ввода окно не закрывалось, а осталось для возможности ввести следующие данные.
     
    Спасибо!

    Всего записей: 8 | Зарегистр. 08-06-2011 | Отправлено: 10:41 29-06-2011
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    FantoMax22
    Ввод в батнике делается через команду
    set /p in="Текст комментария"
    В переменной in - введенное значение. (см. set /?)
     
    Для организации цикла в начале поставь метку, типа этого
    :label
    а в конце переход на метку:
    goto :label
    см. goto /?

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 10:49 29-06-2011
    wolf0425



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

    Цитата:
     Когда заходишь без /admin переменная устанавливается в имя клиентского компа с которого заходишь.
    Вот так и различать.  
    странно, захожу вот на 2008/64 сервер без /admin - %CLIENTNAME% не определена.
     
    up: перезапустил FAR, из которого смотрел переменные - определена.
    причем SESSIONNAME=RDP-Tcp#0
     
    на соседнем 2003/32, где /admin по жизни - SESSIONNAME=RDP-Tcp#1
    а  %CLIENTNAME% тоже не определена

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 10:53 29-06-2011 | Исправлено: wolf0425, 11:00 29-06-2011
    res2001



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    wolf0425
    В 2008 не проверял, тестировал на ВинХП, 2003х32/64, Вин7 х32

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 10:57 29-06-2011
    FantoMax22

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

    Всего записей: 8 | Зарегистр. 08-06-2011 | Отправлено: 10:59 29-06-2011
    igorivlev

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем здрасти.
     
    Есть необходимость на 100 серверах с линуксом выполнить одинаковые команды (залить туда пакет, остановить сервис, установить пакет, запустить сервис).
     
    Перечитав кучу листов форума родился *.bat скриптец.
     

    Код:
    @echo off
    set adr=10.101.252.1
    set lgn=loginuser
    set pwd=password
     
    pscp.exe -pw %pwd% comands.t %lgn%@%adr%:/tmp  
     
    plink.exe -ssh -2 %adr% -l %lgn% -pw %pwd% -m comands.t

     
    Есть .txt файл, в котором через пробел перечислены адрес, логин и пароль для каждого сервера.
    Подскажите, как организовать цикл с вычитыванием данных из файла и перебором  этих параметров.
     
     
     

    Всего записей: 2 | Зарегистр. 29-06-2011 | Отправлено: 17:07 29-06-2011
    res2001



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

    Код:
    @echo off
    for /f "tokens=1-3" %%a in (list.txt) do (
    pscp.exe -pw %%c comands.t %%b@%%a:/tmp  
    plink.exe -ssh -2 %%a -l %%b -pw %%c -m comands.t
    )

    файл list.txt содержит строчки вида:
    192.168.0.1 login password

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 17:12 29-06-2011 | Исправлено: res2001, 17:13 29-06-2011
    FantoMax22

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Привет!
     
    Что сделал не так?
    есть батник:
     
    @echo off
    title Mac-Bypass
    :4
    echo Введите mac-адрес и описание:
    set /p mac=
    dsadd user ...
    dsmod group ...
    dsmod user ...
    goto:4
     
    Когда кликаю на него, то он запускается и предлагает "Введите mac-адрес и описание:", но когда ввожу мак-адрес и описание и жму ввод, то выходит сообщение
    "dsadd ошибка:Не указано значение для "samid"
     
    Если открываю батники из командной строки, сразу указав мак и описание, то скрипт срабатывает. Так понимаю, что косяк где-то с переменной.
     
    С уважением!

    Всего записей: 8 | Зарегистр. 08-06-2011 | Отправлено: 05:21 30-06-2011 | Исправлено: FantoMax22, 05:22 30-06-2011
    wolf0425



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

    Цитата:
     "dsadd ошибка:Не указано значение для "samid"  
    мы у гадалки должны узнавать что ты там потерял в dsadd  ... ?
    или у тебя там так "..." и прописаны в батнике?  

    Цитата:
    Так понимаю, что косяк где-то с переменной.  
    ты где-то в  своем батнике видишь использование %mac%?
    я - почему-то не вижу

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 07:18 30-06-2011 | Исправлено: wolf0425, 07:21 30-06-2011
    FantoMax22

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
     
    вот весь батник:
     
    @echo off
    title Mac-Bypass
    :4
    echo Введите mac-адрес и описание:
    set /p mac=
    dsadd user "cn=%1,ou=Mac Bypass,ou=Support,OU=Organization Structure,DC=mydomain,DC=ru" -pwd Password1 -pwdneverexpires yes  -samid %1 -upn %1@mydomain.ru -fn %1 -display %1 -desc %2
     
    dsmod group "cn=Security - MacB,ou=RADIUS Access Groups,ou=Consolidated Groups,ou=Organization Structure,dc=mydomain,dc=ru" -addmbr "cn=%1,ou=Mac Bypass,ou=Support,OU=Organization Structure,DC=mydomain,DC=ru"
     
    dsmod user "cn=%1,ou=Mac Bypass,ou=Support,OU=Organization Structure,DC=mydomain,DC=ru" -pwd %1
     
    goto:4

    Всего записей: 8 | Зарегистр. 08-06-2011 | Отправлено: 07:52 30-06-2011
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    FantoMax22 повторяю вопрос:
    Цитата:
    ты где-то в  своем батнике видишь использование %mac%?

    а если переменная не используется - зачем её присваиваешь?
     

    Цитата:
    Когда кликаю на него, то он запускается
    и вообще-то в тексте батника видны %1 и %2 - т.е. батник не предназначен для запуска простым кликаньем в эксплорере, ему два параметра нужны в командной строке, на отсутствие первого dsadd тебе и жалуется.
    но куда там потерялась %mac% - всё равно интересно.
     
    Добавлено:
    вообще похоже ты вот это хотел написать:

    Код:
    @echo off
    title Mac-Bypass
     
    if "%~1" neq == "" goto :add
     
    :4
    set /p mac="Введите mac-адрес и описание:"
    call :add %mac%
    goto :4
     
    :add
    dsadd user "cn=%1,ou=Mac Bypass,ou=Support,OU=Organization Structure,DC=mydomain,DC=ru" -pwd Password1 -pwdneverexpires yes  -samid %1 -upn %1@mydomain.ru -fn %1 -display %1 -desc %2
    dsmod group "cn=Security - MacB,ou=RADIUS Access Groups,ou=Consolidated Groups,ou=Organization Structure,dc=mydomain,dc=ru" -addmbr "cn=%1,ou=Mac Bypass,ou=Support,OU=Organization Structure,DC=mydomain,DC=ru"
    dsmod user "cn=%1,ou=Mac Bypass,ou=Support,OU=Organization Structure,DC=mydomain,DC=ru" -pwd %1
     
    exit /b

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 08:25 30-06-2011 | Исправлено: wolf0425, 08:50 30-06-2011
    FantoMax22

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    Именно это и хотел. Переменную впихнул видать по непониманию. Огромное спасибо!!!

    Всего записей: 8 | Зарегистр. 08-06-2011 | Отправлено: 08:48 30-06-2011 | Исправлено: FantoMax22, 01:37 01-07-2011
    qqqbbb

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как через батник добавить в файл текст  в начало каждой строки? Есть список файлов созданный через DIR, нужно в начало каждой строки добавить DEL.

    Всего записей: 30 | Зарегистр. 25-07-2010 | Отправлено: 09:38 30-06-2011
    res2001



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

    Код:
    sed -r "s;(.*$);DEL\1;" test.txt

    sed.exe возьми в шапке, текст в файле test.txt

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 10:05 30-06-2011
    igorivlev

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

    Цитата:
    igorivlev  
     
    Код:
    @echo off  
    for /f "tokens=1-3" %%a in (list.txt) do (  
    pscp.exe -pw %%c comands.t %%b@%%a:/tmp    
    plink.exe -ssh -2 %%a -l %%b -pw %%c -m comands.t  
    )
     
    файл list.txt содержит строчки вида:  
    192.168.0.1 login password  
     

     
    Огромное спасибо, все получилось.
     
    И еще вопросик, как передать пароль после ввода логина.
    т.е. в файле comands.t есть команда su, после которой нужно ввести пароль, какой командой это сделать? (сразу подключиться рутом нет возможности).

    Всего записей: 2 | Зарегистр. 29-06-2011 | Отправлено: 10:27 30-06-2011
    wolf0425



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

    Код:
    for /f "delims=" %%a in ( file_in.txt ) do 1>>file_out.txt echo.del /q "%%~a"

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 10:29 30-06-2011
    res2001



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

    Цитата:
    И еще вопросик, как передать пароль после ввода логина.  

    Это тебе не сюда надо, а к линуксоидам.

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

    Страницы: 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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 10
    vu1tur (29-07-2011 12:47): Задачи на bat-файлах 11


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru