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

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

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

vu1tur (26-05-2009 11:39): часть 7 — http://forum.ru-board.com/topic.cgi?forum=62&topic=17154#1  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

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





    http://forum.ru-board.com/topic.cgi?forum=62&topic=17154

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 23:07 04-11-2008 | Исправлено: vu1tur, 11:38 26-05-2009
    Maza_Faka



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

    Цитата:
    записать ай-пи в файл

    Какой IP?
     

    Цитата:
    сделать релог

    Что такое релог?

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 07:04 18-02-2009
    morningsun

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Доброго времени суток всем !
    Моя задачка разделяется на 2 вопроса
     
    1) Есть текстовый файлик - его содержание:
     

    Код:
    ivanov
    Ivanov
    Ivanovich
    ii@company.com

     
    Надо запихать каждую строчку в отдельную переменную, вот как реализовал это я :
     

    Код:
     
    @ echo off
    set count=0
     
    for /f %%i in (testfile.txt) do (
    call :ct %%i
    )
     
    :ct
    set /a count=%count%+1
    echo %count%
    if %count%==1 (
    set ac=%1  
    echo %ac%
    )
    if %count%==2 (
    set nm=%1  
    echo %nm%
    )
    if %count%==3 (
    set sn=%1  
    echo %sn%
    )
    if %count%==4 (
    set ma=%1  
    echo %ma%
    )
     

     
    Там все просто: в зависимости от состояния счетчика в переменную пишется значение. Меня не устраивает только одно - это уже второй вопрос
     
    2) Когда запускаешь скрипт из cmd все отрабатывает и записывается куда надо. А когда запускаешь мышкой bat файл он в файл вместо данных аккаунта пишет "echo off"
    ?? как понимать ?

    Всего записей: 4 | Зарегистр. 12-10-2007 | Отправлено: 17:56 18-02-2009 | Исправлено: morningsun, 18:18 18-02-2009
    Mr_Hat



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем привет!
    Нужна ваша помошь в причесывании батника,
    по выдергиванию настроек прокси IE из реестра.

    Код:
     
    @echo off
    regedit.exe -ea %SYSTEMDRIVE%\IEproxy.reg "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections"
    regedit.exe -ea %SYSTEMDRIVE%\IEproxy.tmp "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings"
    echo. [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings] >>%SYSTEMDRIVE%\IEproxy.reg
    find /i "ProxyEnable" %SYSTEMDRIVE%\IEproxy.tmp >>%SYSTEMDRIVE%\IEproxy.reg
    find /i "ProxyServer" %SYSTEMDRIVE%\IEproxy.tmp >>%SYSTEMDRIVE%\IEproxy.reg
    del /f /q %SYSTEMDRIVE%\IEproxy.tmp
    del /f /q %SYSTEMDRIVE%\IEproxy2.reg
     

     
    получается все верно, только при поиске заданых параметров посредством find /i
    в конечный файл добавляется еще мусор - ---------- C:\IEPROXY.TMP  отчет команды.
    Результат рабочий, но все же хочется довести его до ума.
     
    Есть идеи ?!

    Всего записей: 984 | Зарегистр. 04-10-2005 | Отправлено: 21:35 18-02-2009 | Исправлено: Mr_Hat, 22:33 18-02-2009
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    morningsun
     
    Наверное виноват пробел в "@ echo off"
     
     
     
     
    Добавлено:
     

    Mr_Hat
     
    Наверное  виноват `on` в "@echo on"

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 21:42 18-02-2009 | Исправлено: 01MDM, 21:46 18-02-2009
    Mr_Hat



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
     
    нет не помогло
    мусор остался ---------- C:\IEPROXY.TMP

    Всего записей: 984 | Зарегистр. 04-10-2005 | Отправлено: 22:05 18-02-2009 | Исправлено: Mr_Hat, 22:06 18-02-2009
    igor_andreev

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

    Код:

    more %SYSTEMDRIVE%\IEproxy.tmp | find /i "ProxyEnable">>%SYSTEMDRIVE%\IEproxy.reg  
    more %SYSTEMDRIVE%\IEproxy.tmp | find /i "ProxyServer">>%SYSTEMDRIVE%\IEproxy.reg


    Всего записей: 1704 | Зарегистр. 08-12-2004 | Отправлено: 22:37 18-02-2009
    Mr_Hat



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    igor_andreev
     +5 ты Гуру !  
    спасибо.

    Всего записей: 984 | Зарегистр. 04-10-2005 | Отправлено: 22:47 18-02-2009
    morningsun

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Неа все также из cmd работает а из Explorer а нет

    Всего записей: 4 | Зарегистр. 12-10-2007 | Отправлено: 10:14 19-02-2009
    Dmitriy_Kolesnikov

    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Подскажите, как лучше решить задачу.
     
    Надо проверить, входит ли юзер в заданную группу безопасности и, в зависимости от этого, выполнить ту или иную команду.
     
    Насколько я понимаю, для локальной рабочей группы надо использовать команду  
    ifmember
    С этим я, думаю, разберусь.
     
    Вопрос теперь в проверке с недоменного компьютера, входит ли юзер в доменную группу. Подсказали такое решение:
     
    for /f %%i in ('cmd /c "dsquery user -samid %username% | dsget user -memberof -expand | dsget group -samid"') do (
      if %%i==Users echo %%i
    )
    rem получаем группы пользователя:  
    rem dsquery user -samid %username% | dsget user -memberof -expand <- DN
    rem dsquery user -samid %username% | dsget user -memberof -expand | dsget group -samid <- SAM
     
    Вопрос теперь в том, что на недоменном компе надо сначала (перед выполнением команды dsquery) авторизоваться на контроллере домена, иначе в процессе выполнения скрипта у юзера выскочит окно авторизации.
    Как это сделать?

    Всего записей: 268 | Зарегистр. 12-12-2004 | Отправлено: 12:33 19-02-2009
    01MDM



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

    Цитата:
    Неа все также из cmd работает а из Explorer а нет

    А как ты запускаешь из консоли и из эксплорера? И каким должен быть конечный результат? Зачем разные переменные для каждой строчки, если ты все равно записываешь их в другой файл?
     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 15:28 19-02-2009
    ikif



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

    Цитата:
    Здравствуйте.  
    Помогите с написанием Батча, даже не знаю как начать его.  
    Задача такова:  
    Нужно , находясь подключеным к интернету, записать ай-пи в файл и сделать релог, после этого надо новый ай-пи сверить с записаным и если они одинаковы , то релог опять.  
     
    При следующем запуске бата, ДОБАВЛЯЕМ ай-пи , которий у нас в данный момент к файлу с записаными предыдущими ай-пи. После релога , надо проверить новый ай-пи со всеми ай-пи из файла-списка.  
     
    Как отключиться и подключиться к интернета я знаю.  
     
    Заранее благодарен.

     

    Цитата:
     
    ikif  
     
    Цитата:записать ай-пи в файл  
     
    Какой IP?  
     
     
    Цитата:сделать релог  
     
    Что такое релог?

     
    Записать IP ,которий у меня на в данный момент.
    Релог - имею в виду переподключиться к интернету.
    Подробнее...
    Это то что есть у меня на данний момент.
    Как сделать то что я хочу не знаю.
    Помогите пожалуйста.

    Всего записей: 164 | Зарегистр. 09-12-2006 | Отправлено: 19:19 19-02-2009
    K_AHTOH



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Доброе время суток уважаемые! Помогите решить задачку?
     
    Есть удаленный компьютер с расшаренным ресурсом (папкой) с требованием логина и пароля.
     
    Как реализовать такую функцию:
    1. Получить доступ к папке (ну это я сделал с помощью NET USE)
    2. Получит имя файла который еще не обрабатывался к примеру 20_02_2009.bin (их много с одним расширением но с разным именем сформированы по дате создания)
    3. Передать его на обработку внешней программе типа parser.exe Диск(который присвоился в NET USE):\имя папки\20_02_2009.bin
    Когда парсер отработает, на локальном диске появиться файл 20_02_2009.log
     
    Так вот как можно определить обрабатывался файл или нет? Файлы формируются на удаленном компьютере раз в сутки.
    Файлы на локальном компе желательно удалять после новой обработки. Т.е. если появится файл 21_02_2009.log удалить 20_02_2009.log
     

    Всего записей: 155 | Зарегистр. 20-10-2006 | Отправлено: 20:44 19-02-2009
    Maza_Faka



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

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

    Дык а если IP-адресов несколько?

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 07:56 20-02-2009
    Ilyansk

    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    порылся поиском там-сям, чёт не оч.рулит :(
    может я "зажрался", но ... много чего делаю батниками.. кол-во обрабатываемой информации растет, и вот пришла пора копрования файлов в десятки-сотни Мб. Батник это конечно делает, но пользователя несколько пугает "застывание" экрана при этом. Возникла мысль вызвать системную процедуру копирования, с ее анимированным окном и прогрессбаром. Но вот, как-то блёкло на эту тему с инфой... это можно ли вообще? может не бат средствами, а VBS или JScript? может rundll какой-то? посоветуйте, плз, куда рыть?

    Всего записей: 70 | Зарегистр. 27-07-2006 | Отправлено: 08:58 20-02-2009
    king_stiven

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

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 09:12 20-02-2009
    Ilyansk

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

    Код:
    ::@echo off
    SETLOCAL ENABLEDELAYEDEXPANSION
    set "logfile=logfil"
    :: logfile - файл, гда хранятся имена обработанных ранее файлов
    SET "SEEKIN=путь где искать файлы\*.*"
    for %%f in (!SEEKIN!) DO call :chk %%f
    goto :eof
     
    :chk
    SET "NEW=1"
    for /F "tokens=1 delims=;" %%d in ('findstr /L /I /C:"%1" %logfile%')  DO  call :wrk %1
    IF "!NEW!"=="1" (
    ECHO FOUND NEW FILE %1
    parser %1
    if errorlevel 0 ECHO %1 >> %LOGFILE%
    )
    goto :eof
    :wrk
    if not "%1"=="" SET "NEW=0"

    батник ищет для каждого файла в путь где искать файлы\*.* его имя в logfil
    (имена можно давать с путями, но лучше без пробелов)
    если файл новый запускает пармер и рпри успешной обработке запоминает в logfil
    вроде, так

    Всего записей: 70 | Зарегистр. 27-07-2006 | Отправлено: 10:15 20-02-2009
    K_AHTOH



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Ilyansk
    Спасибо буду пробовать. О результатах отпишусь.
     
    Работает !!! Респект!!!  Теперь осталось причесать под свои нужды.

    Всего записей: 155 | Зарегистр. 20-10-2006 | Отправлено: 11:00 20-02-2009 | Исправлено: K_AHTOH, 12:13 20-02-2009
    Pr1nt

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте.
    Помогите пожалуйста со следующей задачей:
     
    Есть скрипт который по порядку вызывает другие батники из текущей папки. Результат их выполнения успешно записывается в соответствующий log-файл. Вызывать их нужно до первой ошибки (т.е. если вызываемый дочерний скрипт отрабатывает с ошибкой, нужно выдать ее и остановить выполнение основного).
     
    Получается что-то вроде:

    Код:
    @echo off
    for %%f in (*.cmd) do if not "%%f"=="%~nx0" (
        call %%f > %%~nf.log
    )

    Только вот нужно сделать контроль ошибок.
    Мысли по поводу решения:
    1) ERRORLEVEL походу не получится использовать? (call его не меняет?)
    2) Перенаправить стандартный вывод ошибок в переменную для контроля тоже вроде не выходит?
    3) Возможно нужно перенаправить ошибку в файл и контролировать его размер?

    Всего записей: 11 | Зарегистр. 19-04-2007 | Отправлено: 14:58 20-02-2009
    ikif



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

    Цитата:
    Maza_Faka
    Дык а если IP-адресов несколько?  

     
     
    Спасибо . Потратил 6 часов и  решил проблему.
    Подробнее...
     
    В RECONNECT записываю код которий делает перезаход в интернет.

    Всего записей: 164 | Зарегистр. 09-12-2006 | Отправлено: 16:35 20-02-2009 | Исправлено: ikif, 16:39 20-02-2009
    Maza_Faka



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

    Цитата:
    Помогите пожалуйста со следующей задачей

    Варианты:
     
    1.
    При появлении ошибки писать в лог-файл слово ~Error, и после каждого вызова проверять лог-файл на наличие этого слова:

    Код:
     
    Find "~Error" log.txt && Exit /B
     

     
    2.
    В принципе, некоторые команды в вызываемых пакетных файлах будут устанавливать %ERRORLEVEL%, который можно будет проверять в главном пакетном файле. Но минус заключается в том, что, не все команды возвращают код ошибки.
     
    3.
    Все переменные обьявленные в вызываемых пакетных файлах, будут доступны и в главном пакетном файле. При возникновении ошибки можно будет обьявить какую-либо переменную, а затем проверять её:

    Код:
     
    If Defined ERROR_VAR Exit /B
     

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 08:15 21-02-2009 | Исправлено: Maza_Faka, 08:17 21-02-2009
       

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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 6
    vu1tur (26-05-2009 11:39): часть 7 — http://forum.ru-board.com/topic.cgi?forum=62&topic=17154#1


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru