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

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

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

    Всего записей: 7 | Зарегистр. 04-04-2009 | Отправлено: 12:02 04-04-2009 | Исправлено: quaka, 12:13 04-04-2009
    Elroir



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

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

    Только что прогнал указанный кусок кода у себя на компе - получил файл с 1000001 строчками - от 2000000 до 3000000. В логике программы нет ничего, что могло бы пропускать определенные числа.

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 13:08 04-04-2009
    quaka

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Сделал, совсем по другому, главное работает. : )

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



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Делать было нечего, дело было вечером ©
       
     
    Простенький календарик

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 17:17 05-04-2009 | Исправлено: 01MDM, 17:25 05-04-2009
    shubaly



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите, пожалуйста, как убрать пробел в определенном месте в названии файла.
    Например, есть файл
    "aaa bbbb.xxx"
    надо получить
    "aaabbbb.xxx"
     
    Спасибо.
     
    P.S. Нужно для обработки группы файлов.
     
     
     
    Добавлено:
    Сделал, что хотел ч-з Kristanix File Renamer Turbo 2.57 , но хотелось-бы замутить задачку выше средствами Microsoft. Спасибо.

    Всего записей: 20 | Зарегистр. 14-11-2006 | Отправлено: 12:24 06-04-2009
    artrad77



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

    Цитата:
     
    @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
     

     
    Спасибо Maza_Faka в принципе помогло только  кусок "проверки исключения"  в цикл засовывать не надо
     
    Еще один вопросик  
    Есть программа  которая проводит действия со списком компов (список в файле list.txt)  
    и в случае ошибки заносит сетевое имя компа в cdrom.log  Но у этой программы может быть несколько вариантов ошибок и хотелось бы  увидеть в логе помимо перечисления сетевого имени компа суть ошибки  (2>&1) но как реализовать это в цикле чтоб предыдущая запись не затиралась ума не приложу  
    for /f %%c in (list.txt) do programm.cmd || echo %%c >> cdrom.log

    Всего записей: 5 | Зарегистр. 02-04-2009 | Отправлено: 15:22 06-04-2009
    Maza_Faka



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

    Цитата:
    хотелось-бы замутить задачку выше средствами Microsoft

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

    Код:
     
    @Echo off
     
    Set WorkDir=c:\Test
     
    ::Создаём утилиту sbs2.com
    Call :sbs2.com
     
    For /F "Usebackq Tokens=*" %%A In (`Dir /B /S %WorkDir% ^| Find " "`) Do (
       For /F "Usebackq Tokens=*" %%B In (`Echo %%~nxA ^| "%temp%.\sbs2.com" 0 " " ""`) Do Ren "%%A" %%B
    )
     
    Del /F /Q "%temp%.\sbs2.com"
    GoTo :EOF
     
    :sbs2.com
    :: Create the assembler program, by Herbert Kleebauer
    echo Bj@jzh`0X-`/PPPPPPa(DE(DM(DO(Dh(Ls(Lu(LX(LeZRR]EEEUYRX2Dx=> "%temp%.\sbs2.com"
    echo 0DxFP,0Xx.t0P,=XtGsB4o@$?PIyU!WvX0GwUY Wv;ovBX2Gv0ExGIuht6>> "%temp%.\sbs2.com"
    echo ?@}IKuNWpe~Fpe?FNHlF?wGMECIQqo{Ox{T?kPv@jeoSeIlRFD@{AyEKj@>> "%temp%.\sbs2.com"
    echo iqe~1NeAyR?mHAG~BGRgB{~H?o~TsdgCYqe?HR~upkpBG?~slJBCyA?@xA>> "%temp%.\sbs2.com"
    echo LZp{xq`Cs?H[C_vHDyB?Hos@QslFA@wQ~~x}viH}`LYNBGyA?@xAB?sUq`>> "%temp%.\sbs2.com"
    echo LRy@PwtCYQEuFK@A~BxPtDss@fFqjVmzD@qBEOEenU?`eHHeBCMs?FExep>> "%temp%.\sbs2.com"
    echo LHsPBGyA?@xAunjzA}EKNs@CA?wQpQpKLBHv?s`WJ`LRCYyIWMJaejCksl>> "%temp%.\sbs2.com"
    echo H[GyFGhHBwHZjjHeoFasuFUJeHeB?OsQH[xeHCPvqFj@oq@eNc?~}Nu??O>> "%temp%.\sbs2.com"
    echo ~oEwoAjBKs?Zp`LBzHQzyEFrAWAG{EFrAqAGYwHTECIQ{coKIsaCsf{Oe~>> "%temp%.\sbs2.com"
    echo CK}Ayre~CNFA{rAyEKFACrA{EKGAjbA}eKGSjNMtQFtc{OAyDGFj?{FDGQ>> "%temp%.\sbs2.com"
    echo KAjNVk_OCAx@e?f{o?CosI}1EGizhljJ~H1ZeG}JBA~rACBMDGjjDG@g0>> "%temp%.\sbs2.com"
     

     
    Добавлено:
    artrad77

    Цитата:
    Есть программа  которая проводит действия со списком компов (список в файле list.txt)    
    и в случае ошибки заносит сетевое имя компа в cdrom.log  Но у этой программы может быть несколько вариантов ошибок и хотелось бы  увидеть в логе помимо перечисления сетевого имени компа суть ошибки  (2>&1)

    Попробуйте так:
    Не тестировал!

    Код:
     
    @Echo Off
     
    Setlocal Enabledelayedexpansion
     
    For /F %%A In (list.txt) Do (
       programm.cmd 2>cdrom.log
       If Not "!ERRORLEVEL!"=="0" (
       Echo %%c>>cdrom.log
       Echo.>>cdrom.log)
    )
     

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

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите разобраться с проблемой?
    Наваял батник. Делал его наплывами, потихоньку усложняя в меру своих возможностей.
     
    Подробнее...
     
    Никак не могу добиться, вывода в лог key_copy.log  Своего примечания.  
    Любая из первых переменных выводится, а вместо %REMARK% пустота.

    Всего записей: 1 | Зарегистр. 06-04-2009 | Отправлено: 18:52 06-04-2009 | Исправлено: SonkSPb, 18:56 06-04-2009
    braconier

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

    Цитата:
    braconier
    для работы с папками идеальней robocopy не придумаешь
    когда же я устану это повторять?  
    подскажите пожалуйста как при помощи robocopy скопировать паки по маске, в хелпе смотрел есть только exclude по маске.

    Всего записей: 32 | Зарегистр. 14-09-2005 | Отправлено: 18:56 06-04-2009
    ZenitFan



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Подскажите пожалуйста, как средствами командной строки определить точный путь к папке профиля Firefox.

    Код:
    Он имеет такой вид:
    %appdata%\mozilla\firefox\profiles\????????.default
    на месте знаков вопроса 8 случайных символов

    Далее надо этот определённый путь сохранить в переменную и затем использовать в качестве пути распаковки архива %temp%\test.7z.
     
    Заранее спасибо.

    ----------
    AMD Ryzen7 5800X3D, ASUS STRIX X570-E, 32GB DDR4-3600 G.Skill, RX 7900XTX, Sams980PRO 1TB NVMe + Seagate IronWolf 4TB + WD Red 4TB, SB AE-9, 27" DELL S2721DGFA, Win10Pro(22H2)Ru

    Всего записей: 813 | Зарегистр. 10-09-2006 | Отправлено: 21:58 06-04-2009
    king_stiven

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

    Код:
    Код:del a:\*.* /Q
    cls
    @echo                 Введите PIN (780PIN) клиента:
    @SET /P PIN=                    
    @cls
    @echo                 Копирование файлов клиента 780%PIN%:
    @echo off
    @xcopy R:\Clibank\cl_bank.ini a:\ /Q /Y > num
    @if exist a:\cl_bank.ini (@echo                  Конфиг-файл скопирован) ELSE (@echo                  Конфиг-файл НЕ скопирован!!!)
     
    rem @xcopy R:\Clibank\Manual.doc a:\  /Q /Y > num
    rem @if exist a:\Manual.doc (@echo                  Руководство пользователя скопировано) ELSE (@echo                  Руководство пользователя НЕ скопировано!!!)
     
    @xcopy R:\Clibank\Keys\clkeys\780%PIN%.kpr a:\  /Q /Y > num
    @xcopy R:\Clibank\Keys\clkeys\780%PIN%.kpu a:\  /Q /Y > num
     
    @if exist a:\780%PIN%.kpr (@echo                  Ключи скопированы) ELSE (@echo                  Ключи НЕ скопированы!!!)
    del num /Q
     
    :MENU1
    @echo         ********************************************************
    @echo                  Выберите вариант примечания:
    @echo                  1) Первичная генерация.
    @echo                  2) Замена дискеты.
    @echo                  3) Свое примечание.
     
    @SET /P CHOISE=                  
     
     
    if "%CHOISE%"=="1" (
        @echo   %DATE% %TIME% Ключи скопированы на дискету для клиента 780%PIN%: Первичная генерация >> R:\Clibank\Logs\key_copy.log
        goto END
        )
     
     
    if "%CHOISE%"=="2" (
        @echo   %DATE% %TIME% Ключи скопированы на дискету для клиента 780%PIN%: Замена ключевого носителя >> R:\Clibank\Logs\key_copy.log
        goto END
        )
     
    if "%CHOISE%"=="3" (
        Call :jk
    ) ELSE (
        goto MENU1
    )
    :END
            @echo         ********************************************************
            @echo         ********************************************************
            ping -n 5 localhost > nul
    goto :eof
    :jk
            @cls
        @echo         ********************************************************
        @echo                    Введите основание для генерации ключей:          
     
        @SET /P REMARK=                    
            @echo   %DATE% %TIME% Ключи скопированы на дискету для клиента 780%PIN%: %REMARK% >> R:\Clibank\Logs\key_copy.log


    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 22:57 06-04-2009 | Исправлено: king_stiven, 23:13 06-04-2009
    vvlad0000

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Может подскажет кто: при вызове из bat-файла какого-либо *.exe, окно консоли висит до тех пор, пока этот самый *.exe не завершится. Система - WinXP SP3. На Win2K, как я помню, такого не было.  
     
    Как заставить bat не ждать завершения вызванного из него приложения?

    Всего записей: 33 | Зарегистр. 08-05-2008 | Отправлено: 06:33 07-04-2009
    01MDM



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

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 08:06 07-04-2009
    Maza_Faka



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

    Цитата:
    как средствами командной строки определить точный путь к папке профиля Firefox

    Можно так:

    Код:
     
    @Echo off
     
    For /F "Usebackq Tokens=*" %%A In (`Dir /B /A:D "%APPDATA%\Mozilla\Firefox\Profiles\*.default"`) Do Set ProfilePath="%APPDATA%\Mozilla\Firefox\Profiles\%%A"
     
    Echo %ProfilePath%
     

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

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Народ!
    Как/чем настроить резервное копирование "Моих документов" с использованием 7zip исключая/включая файлы по маске и по расписанию?
     
    С одной стороны, есть nnBackup и nnCron, но 1-й не знает 7zip - поэтому архив > 2 гб не распаковывается, 2-й имеет замечательную возность польностью скрыть запуск происходящего процесса, но работает только с администраторскими правами доступа.
     
    Есть возможность запаковать *.cmd в exe посредством Quick Batch File Compiler и сделать запуск стандартным планировщиком Windows. Но? что должнобыть в этом самом cmd? или можть прога какая уже есть

    Всего записей: 162 | Зарегистр. 24-05-2006 | Отправлено: 09:55 07-04-2009
    storm2005

    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Работа с com портом
     
    Необходимо работать с модемом посредством AT команд.
    Наткнулся на то, что можно работать через гипертерминал. Также в инете много разных альтернативных программ.
    Но меня прежде всего интересует можно ли обойтись стандартными методами ввода команд? Например как в линуксе перенаправлять поток на определенное стандартное устройство. Нельзя ли это сделать как нибудь через команды cmd?  
    Или что то более серьезное типа WMI или Power Shell?  
     
    Основная идея состоит в том, чтоб можно было проверить состояние счета. Данные переданные com портом скинуть в файл. Обработать файл и при наличии определенной информации дать команду на пополнение счета.

    Всего записей: 15 | Зарегистр. 18-02-2006 | Отправлено: 12:05 07-04-2009 | Исправлено: storm2005, 12:07 07-04-2009
    Nuke142



    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Подскажите пжалста.
    Нужно как-то сделать чтобы отсюда http://devbuilds.kaspersky-labs.com/devbuilds/AVPTool/
    можно было себе на комп скачивать файлы через батник. Проблема в том что тамошняя ссылка на скачку ексешника генерится по нескольку раз в день с разными названиями файла.

    Всего записей: 302 | Зарегистр. 03-04-2008 | Отправлено: 00:55 08-04-2009
    ATS2000

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

    Цитата:
     
    @echo off
    :: Пингуемый IP-адрес
    set IP=10.2.236.210
     
    :LOOP
     
    ping %IP% |find /i "TTL=">nul
     
    if %errorlevel%==0 (
     
        echo %date% %time%    %IP% pinging >>%IP%.txt
     
    ) else (
        echo %date% %time%    %IP% not pinging >>%IP%.txt
    )
    goto LOOP
     

     
    Подскажите:
     
    1. Как мониторить сразу несколько хостов и передавать их списком из файла? Наверное в цикле надо делать?
     
    2. Если мониторится сразу несколько хостов, то создать папку для каждого,в которую писать логи с именем текущей даты. Например для хоста 10.2.236.210 создаётся папка 10.2.236.210, в которую пишутся логи с именами текущей даты 08.04.2009.log, 09.04.2009.log и т.д. Т.е. скрипт работает непрерывно и в зависимости от текущей даты создаёт нужные лог-файлы.
     

    Всего записей: 276 | Зарегистр. 21-02-2005 | Отправлено: 04:23 08-04-2009
    Igor_V_Mitichev

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Граждане, главным образом, вопрос не столько в программировании командного файла, сколько в наличии собственно команды. Задача заключается в том, чтобы поднимать/гасить ppoe/vpn соединение из скрипта. Сами соединения созданы, настроены, пароли сохранены. Можно как-то обойтись без кликания мышкой на соответствующих значках в "сетевых подключениях"?

    Всего записей: 32 | Зарегистр. 26-07-2008 | Отправлено: 09:13 08-04-2009
    Maza_Faka



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

    Цитата:
    1. Как мониторить сразу несколько хостов и передавать их списком из файла? Наверное в цикле надо делать?


    Код:
     
    For /?
     


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


    Код:
     
    MD /?
    Echo %DATE%
     

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 09:16 08-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