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

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



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Accessor, а что мешает использовать именно штатный net use для?
    Код:
    O:\>net use /?
    Синтаксис данной команды:
    NET USE [имя_устройства | *] [\\имя_компьютера\имя_ресурса[\том] [пароль | *]] [/USER:[имя_домена\]имя_пользователя]

    Update ... предварительно "убив" все имеющиеся подключения к (если есть).

    Всего записей: 257 | Зарегистр. 14-02-2009 | Отправлено: 10:51 02-04-2009 | Исправлено: NvvLazyTiger, 11:02 02-04-2009
    Accessor



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NvvLazyTiger
    спасибо, да, то что надо. я начал слишком глубоко копать в то время как решение на поверхности

    Всего записей: 2863 | Зарегистр. 31-10-2003 | Отправлено: 11:32 02-04-2009 | Исправлено: Accessor, 11:39 02-04-2009
    artrad77



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите пожайлуста с решением одной проблемы
    Вводная  - планируется  делать  некие действия над компьютерами в сети, для этого выгружаем список компьютеров  в файл (pcnames.txt)  
            net view /domain:DOMAIN > temp.txt
        findstr /b /c:"\\" temp.txt > temp1.txt    
        for /F "delims=\\ " %%i in (temp1.txt) do echo %%i >> comp\pcnames.txt
        del temp.txt, temp1.txt /f /q
    Плюс имеем переменную в которой через пробел указаны компьютеры которые надо исключить  (set exception=comp1 comp2 comp3). Нужно чтоб в итоге в списке не оказалось компьютеров "исключений" (обычно это делается цикл в цикле, но как реализовать в cmd не нашел) причем результат каждой обработки нужно вывести в отдельный файл названия компьютера что-то вроде этого
             for /F %%A in (comp\pcnames.txt) do echo %%A > comp\%%A  
    т.е. в итоге получим в папке comp файлы с сетевыми именами компов которые надо обработать.  

    Всего записей: 5 | Зарегистр. 02-04-2009 | Отправлено: 09:11 03-04-2009
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    подскажите консольную утилитку для кодирования в wma из wav, или простенькую прожку с поддержкой комстроки.

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 10:53 03-04-2009
    Maza_Faka



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

    Код:
     
    @Echo Off
     
    Set OutDir=C:\comp
    Set Exception=comp1 comp2 comp3
     
    For /F "Usebackq Delims=\\ " %%A In (`Net View ^| Find "\\" ^| Findstr /I /V "%Exception%"`) Do Echo %%A>%OutDir%\%%A.txt
     

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 11:12 03-04-2009
    alexagf



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Промогите решить простейшую задачку:

    Код:
    START /WAIT /D"%ProgramFiles%\путь" программа.exe /silent
     
    Без ключа /silent работает, с ключом - нивкакую.
    Ключ, само собой, правильный.
    Где собака порылась?

    Всего записей: 1438 | Зарегистр. 23-09-2001 | Отправлено: 12:09 03-04-2009
    01MDM



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

    Код:
     
    START /WAIT ("%ProgramFiles%\путь\программа.exe" /silent)  
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 12:19 03-04-2009 | Исправлено: 01MDM, 12:20 03-04-2009
    alexagf



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

    Цитата:
    Windows не удалось найти ("C:\Program Files\путь\программа.exe")
    что с ключом, что без...

    Всего записей: 1438 | Зарегистр. 23-09-2001 | Отправлено: 12:34 03-04-2009
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    alexagf
     
    I'm sorry. Все перепутал, в скобки можно брать при запуске с CMD (cmd /c (start .....)
     
    Попробуй:

    Код:
     
    start /wait "" "%ProgramFiles%\путь\программа.exe" /silent
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 13:01 03-04-2009
    alexagf



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    01MDM
    О как! Работает! Спасибо!
    А что означают эти две кавычки впереди? Без них не запускается.

    Всего записей: 1438 | Зарегистр. 23-09-2001 | Отправлено: 13:26 03-04-2009
    01MDM



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

    Цитата:
    А что означают эти две кавычки впереди? Без них не запускается.

     
    Это название окна. Без кавычек команда start принимает за титл будущего окна первую пару кавычек, а параметр команды за саму команду.
     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 13:30 03-04-2009
    hhr

    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    а как бы получить статистику по интерфейсу в плане принятых/отправленных байт? обработать результат есть чем, а вот как получить в батнике такую цифру - не в курсе.

    Всего записей: 289 | Зарегистр. 20-03-2005 | Отправлено: 19:17 03-04-2009
    metrim

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    В продолжение http://forum.ru-board.com/topic.cgi?forum=62&topic=15343&start=1040#15
    Наконец сподобился опробовать скрипт. Вроде понятно как работает и нормально работает, только некие непонимания образовываются
    Например фрагмент программы:

    Цитата:
    @echo off
    setlocal enabledelayedexpansion
    :: Вносим в переменную то, что было передано аргументом ком. строки
    set "start=%~1"
    :: Определяем вспомогательную переменную для подсчета кол-ва ведущих нулей
    set "position=0"
    :: В следующем блоке, находим количество ведущих нулей и  
    :: определяем переменную prefix с этими нулями
    :find_prefix
    if "!start:~%position%,1!"=="0" (
    set "prefix=!prefix!0"
    set /a "position+=1"
    goto :find_prefix
    )
    :: в переменную "_start" записываем начальный индекс без ведущий нулей  
    set "_start=!start:~%position%!"
    :: в переменную "_end" записываем конечный индекс  
    set /a "_end=_start+1000000"
    :: стираем файл "all_range.txt" (если он существует) и создаем его заново - со всеми возможными ссылками
    del /q all_range.txt 2>nul & for /l %%a in (%_start%,1,%_end%) do (
    :: прибавляем ведущие нули к индексу
    set "whole_number=%prefix%%%a"
    :: записываем полную ссылку в файл
    echo http://domen/!whole_number:~0,4!/!whole_number:~4,2!/!whole_number!.file>>all_range.txt
    )  

    Генерирует список ВНИМАНИЕ из 999998 строк с начальной строкой ...../02000000 и конечной ...../03000000. Т.е. в моем понимании куда то теряются 3 строки. Как такое вообще может быть? какие строки (из логики программы) пропадают и как исправить баг?
     
    Elroir, еще раз огромное спасибо за помощь, надеюсь на дальнейшие подсказки

    Всего записей: 110 | Зарегистр. 05-12-2002 | Отправлено: 03:42 04-04-2009
    Akam1



    Комса
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Задача наверное легкая, подскажите как сделать, что-то после пятницы никак не соображу
    Есть bat-ник, выгружающий backup базы 1С по расписанию шедулера.
    Кусок выглядит так:
    Код:
    :1C
    <... здесь происходит выгрузка стандартными средствами 1С, на выходе получается файл 1C_backup.dt ...>
    if not exist d:\backup\1C_backup.dt goto 1C
    Вроде бы все нормально, но у 1С есть такой прикол - если из базы не вышел пользователь, то 1C_backup.dt не создается и соответственно по коду все идет "по кругу" и будет пытаться выгружаться, пока файл не создастся. Или пока я не приду и не прерву это. Как сделать так, чтобы попыток выгрузки, т.е. создания файла 1C_backup.dt, было только определенное количество раз, например, 10?
    Заранее спасибо.
    P.S. Средствами 1С я сделаю эту выгрузку при любом состоянии базы и без батника, но пока этим заниматься нет времени, пока будет bat-ник.

    ----------
    В правильно поставленном вопросе всегда содержится 50% ответа
    Все будет так, как должно быть. Даже если будет иначе.

    Всего записей: 26360 | Зарегистр. 20-04-2006 | Отправлено: 07:05 04-04-2009
    NvvLazyTiger



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Akam1
    Цитата:
    Как сделать так, чтобы попыток выгрузки, т.е. создания файла 1C_backup.dt, было только определенное количество раз, например, 10?
    Например так:
    Код:
    set TryCount=10
    :1C
    set /a TryCount-=1
    <... здесь происходит выгрузка стандартными средствами 1С, на выходе получается файл 1C_backup.dt ...>
    if not exist d:\backup\1C_backup.dt if %TryCount% GTR 0 goto 1C

    Всего записей: 257 | Зарегистр. 14-02-2009 | Отправлено: 08:36 04-04-2009
    Maza_Faka



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

    Цитата:
    Как сделать так, чтобы попыток выгрузки, т.е. создания файла 1C_backup.dt, было только определенное количество раз, например, 10?

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

    Код:
     
    @Echo Off
     
    Set Count=0
     
    :1C
    Ping -n 3 127.0.0.1>Nul
    If "%Count%"=="10" GoTo :EOF
    Set /A Count+=1
     
    ::<... здесь происходит выгрузка стандартными средствами 1С, на выходе получается файл 1C_backup.dt ...>
    If Not Exist d:\backup\1C_backup.dt GoTo :1C
     

    + Добавил паузу в 3 секунды (Ping -n 3 127.0.0.1>Nul), что бы цикл не был слишком уж плотным

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 08:46 04-04-2009
    Robby

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите есть ли универсальное решение для распаковки всех RARархивов в каталоге, в котором имеются однотомные (*.rar) и многотомные (*.part*.rar) архивы? Если возможно, то желательно проверка успешности распаковки, и если все нормально распаковалось - удаление самих архивов.

    Всего записей: 879 | Зарегистр. 28-09-2003 | Отправлено: 09:00 04-04-2009
    Maza_Faka



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Robby
    Простой способ, без проверки:

    Код:
     
    @Echo Off
     
    Set ArcDir=C:\MyArc
    Set OutDir=c:\MyFolder
     
    Rar e "%ArcDir%\*.rar" c:\MyFolder
    Del /F /Q "%ArcDir%\*.rar"
     

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

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте!
    Написал скрипт который автоматически определяет шлюз и прописывает статическую маршрутизацию
     
    @echo on
    for /f "tokens=3" %%i in ('
        netsh diag show gateway ^| findstr "DefaultIPGateway"
    ') do (
        echo %%i | findstr "\<10\.39" 1>nul && set dg=%%i
    )
    route ADD 10.0.0.0 MASK 255.0.0.0  %dg%
    pause
     
    Дело в том что есть большое множество компов и шлюзы могут меняться, но известно одно что все шлюзы начинаются на 10.39.x.x.
     
    Нужно сделать так, что бы если шлюз отличается от 10.39.х.х то выходило какоенить сообщение на пример "не корректный шлюз или типа того" и маршрут естественно не прописывался.
     
    В принцепи просто нужно сравнить шлюз с неким шаблоном, но в том то и дело что шаблон известен не полностью только 10.39., как бы поступить?

    Всего записей: 7 | Зарегистр. 04-04-2009 | Отправлено: 10:34 04-04-2009
    01MDM



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

    Код:
     
    @echo on
    for /f "tokens=3" %%i in ('
        netsh diag show gateway ^| findstr "DefaultIPGateway"
    ') do (
        echo %%i | findstr "\<10\.39" 1>nul && set dg=%%i || echo Bad Gateway && goto:eof
    )
    route ADD 10.0.0.0 MASK 255.0.0.0  %dg%
    pause
     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 10:47 04-04-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