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

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

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

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

   

Nagual



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

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

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

  • Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 12:28 19-03-2008 | Исправлено: Nagual, 01:02 24-09-2008
    Joolz

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

    Цитата:
    Если пинг не проходит надо выключить соотв сетевой интерфейс ( т.е. по ипу, не ответившему пингом найти имя интефейса или название сетевой карты, чтоб выключить).  

    В товоем коде получается, что ты его рестартуешь, а не выключаешь.
    А так, если IP статично привязан к сетевухе, то проблемы составить 3 условия не должно быть.

    Код:
     
    Ping -n 1 192.168.0.200 >Nul
    If ErrorLevel 1 devcon restart *100010B8*
    Ping -n 1 192.168.0.220 >Nul
    If ErrorLevel 1 devcon restart *30207068*
    Ping -n 1 192.168.0.235 >Nul
    If ErrorLevel 1 devcon restart *11007001*
     

    Здесь числа 100010B8, 30207068 и 11007001 - значения входящие в состав HWID сразу после SUBSYS_.

    Всего записей: 100 | Зарегистр. 24-01-2008 | Отправлено: 10:02 26-03-2008
    slayer120



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

    Цитата:
    В товоем коде получается, что ты его рестартуешь, а не выключаешь

     Ну а какая разница поставь выключить включить будет две строчки вместо одной
    Твой вариант не подходит предполагается ставить скрипт на разные компы и разные сетевухи, и как по твоему я узнаю их девайс ид, чтоб прописать в батник ? Сейчас делаю тупо - если хотя бы один пинг не проходит - рестартуют все сетевые карточки (PCI). Нужен только файлик с списком ип и devcon. По крайней мере проблема потери связи решена - после рестарта проги начинают пахать. Полный код могу выложить если интересно

    Всего записей: 303 | Зарегистр. 24-01-2007 | Отправлено: 10:34 26-03-2008
    sipok

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здрасвствуйте!
     
    НУЖНА ПОМОЩЬ.
     
    У меня есть 5 bat файлов которые запускаються в планировщике задач по дням недели и делают копирование в понед., вторник, среду, четверг и пятницу, в папки от 1 до 5, хотелось бы это все обьеденить в 1 файл и автоматизировать процесс определения дня недели.
    Т.е. вначале будет определять день недели и потом копировать в указанную папку.
     
    Например если понедельник то копировать в папку 1:
    NET USE B: \\server1\folder  
    xcopy /Y f:\folder\*.* B:\1\*.*
    NET USE B: /delete
     
    Если вторник то в папку 2:
    NET USE B: \\server1\folder  
    xcopy /Y f:\folder\*.* B:\2\*.*
    NET USE B: /delete

    Всего записей: 18 | Зарегистр. 15-11-2006 | Отправлено: 11:58 26-03-2008
    Joolz

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

    Цитата:
    как по твоему я узнаю их девайс ид

    А сто мешает запустить
    Код:
    psexec -c -s -n 10 \\COMPUTERNAME devcon /find =net

    Можно еще и find'ом выбрать нужное значение и сделать вывод в файл.

    Всего записей: 100 | Зарегистр. 24-01-2008 | Отправлено: 12:26 26-03-2008
    Dantis

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

     
    Nagual - спасибо за код. Я так понял  этот батник просто удоляет на всех дисках файлы с расширением     дстмп?
     
    и простите  за настойчивость но мне надо именно что бы он запускался из записи в реестреи лежал именно в той папке. и в фоновом режиме.... Если это не трудно реализовать плз помогите нубу. =((

    Всего записей: 26 | Зарегистр. 25-03-2008 | Отправлено: 12:42 26-03-2008 | Исправлено: Dantis, 12:45 26-03-2008
    slayer120



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

    Цитата:
     сто мешает запустить  
    Код:psexec -c -s -n 10 \\COMPUTERNAME devcon /find =ne

      Откуда , за 3000 км до компа без инета? И опять же если этот комп отвалился, на нем pcexec  не сработает по любому ( как я понял ты предлагаешь пустить pcexec  с другого компа). Интерфейс ты можешь поднять опустить только  на самом компе. Так что диспут заканчиваю. См . подробное описание на предыдущей странице.  
      А как вытащить ип на интерфейсе, где "сетевой кабель не подключен" так никто и не сказал, ведь в свойствах tcpip он есть, а ни ipconfig ни route print ничего про его ип не кажут
     
    Добавлено:

    Цитата:
    Здесь числа 100010B8, 30207068 и 11007001 - значения входящие в состав HWID сразу после SUBSYS_.

      Не совсем так. Если  ты будешь рестартить по значениям после сабсис, ты перезагрузишь ВСЕ интерфейсы такого типа, ибо они отличаются Лишь последней 4-кой символов, поэтому я делал рестарт КОНКРЕТНОГО интерфейса именно так

    Цитата:
    for /f "tokens=1,2* delims=:" %%d in (' "devcon.exe find =net | find /i "PCI" " ') do (  
         devcon.exe restart @*"%%d"  
      )  

    те для рестарта используется полная строка devID
     
    Добавлено:
    Dantis

    Цитата:
    Если это не трудно реализовать плз помогите нубу

    Посмотри здесь похожая проблем обсуждается

    Всего записей: 303 | Зарегистр. 24-01-2007 | Отправлено: 13:23 26-03-2008
    01MDM



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

    Код:
     
    @echo off
    for /f "tokens=2 delims==" %%i in ('wmic path win32_LocalTime get DayOfWeek /value') do (
        if not %%i gtr 5 if not %%i equ 0 (
             
             NET USE B: \\server1\folder  
             xcopy /Y f:\folder\*.* B:\%%i\*.*
             NET USE B: /delete
         
        )
    )
     

    Если условия if не нужны - убери
     
    Еще можно посмотреть различные решения для определения дня недели в 4 части  

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 14:51 26-03-2008 | Исправлено: 01MDM, 14:56 26-03-2008
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Dantis
    Код:
    @echo off
    if not exist %~n0.vbs echo>%~n0.vbs CreateObject("WScript.Shell").Run"%0",0&reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v dctmp /d "\"%~dp0%~n0.vbs\"" /f
    for %%a in (c d) do if exist %%a: del/q/f/s %%a:\*.dctmp

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 15:58 26-03-2008 | Исправлено: Nagual, 13:40 27-03-2008
    Dantis

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Спасибо.  почти все работает.... = 0при перезагрузке компа он ен удалял файлы с расширение дстмп.  я подпрравил...все работает...еще раз спасибо

    Всего записей: 26 | Зарегистр. 25-03-2008 | Отправлено: 00:38 27-03-2008
    xxxdavidoffxxx



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте, у меня такая проблема.
    Надо сделать бэкап на postgresql. там запускается файлик pg_dump.exe с кучей параметров, естественно хочу все автоматизировать. Но при запуске файла прога спрашивает пароль для админа. как сделать в батнике чтоб он подставлял туда пароль, если такое возможно. и хотелось бы еще скрипт чтоб сохранял на компе 5 бэкапов(т.е. бэкап в понедельник, вторник, ... а когда наступит понедельник заменил бы первый и т.д.), а затем заменял их...
    Спасиб

    Всего записей: 11 | Зарегистр. 14-06-2007 | Отправлено: 08:32 27-03-2008
    gbcfkf



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

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

    Так тоже работает..
    Дело было в том, что каждую команду вида "%path1%vmware-cmd
    надо выполнять с приставкой start..
     
    Подскажите что за ерунда.  
    закачиваю на ftp файл. Батник:

    Код:
    @ECHO on
    ftp -s:ftp.txt

    Файл ftp.txt:

    Код:
    open xxx.xxx.xxx.xxx
    anonymous
    11111@mail.com
    cd 1/
    put D:\temp\1.txt
    disconnect
    quit  
     

    В результате получаю бесконечный поток  
    ftp -s:ftp.txt
     
    такое ощущение, что запущен в бесконечном цикле батник ECHO ftp -s:ftp.txt
    Ниче не понимаю.. Вручную через командную строку ftp соединение открывается
     

    Всего записей: 702 | Зарегистр. 17-10-2006 | Отправлено: 09:20 27-03-2008 | Исправлено: gbcfkf, 09:21 27-03-2008
    sipok

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

    Цитата:
    Код:  
    @echo off  
    for /f "tokens=2 delims==" %%i in ('wmic path win32_LocalTime get DayOfWeek /value') do (  
        if not %%i gtr 5 if not %%i equ 0 (  
               
             NET USE B: \\server1\folder    
             xcopy /Y f:\folder\*.* B:\%%i
             NET USE B: /delete  
         
        )  
    )  
     

    Записал код в файл 1.cmd на f:\folder\scripts, прописал в "Планировщике задач" запускать данный файл в определенное время.
    выдает ошибку : Unable to create directory - B:\4
    хотя данная директория уже существет.
     
    xcopy /Y f:\folder\*.* B:\%%i\*.*  выполняеться  как \*.* xcopy /Y f:\folder\*.* B:\%%i
     
    \*.*  - удалил, хотя особой разницы не дало

    Всего записей: 18 | Зарегистр. 15-11-2006 | Отправлено: 12:32 27-03-2008 | Исправлено: sipok, 12:41 27-03-2008
    slayer120



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    sipok
    из справки к ХСОРУ :
    Указание в качестве результата файла или каталога  
    Если параметр результат не содержит существующий каталок < так написано в справке >или не заканчивается обратной чертой(\), выводится следующее сообщение
    Что означает destination:
    имя файла или каталога  
    (F = файл, D = каталог)?  
     
    Нажмите F, если файл или файлы должны копироваться в файл. Нажмите D, если файл или файлы должны копироваться в каталог
     
     Значит - либо ставь на конце  значок \,
    xcopy /i /Y f:\folder\*.* B:\%%i\
     либо юзай /i

    Цитата:
    xcopy /i /Y f:\folder\*.* B:\%%i  


    Всего записей: 303 | Зарегистр. 24-01-2007 | Отправлено: 13:42 27-03-2008 | Исправлено: slayer120, 13:46 27-03-2008
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Dantis, да, все верно, поправил код
    родной утилой ftp не работаю
    юзаю для этих целей curl
    текущая версия без ssl
    Подробнее...

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 13:57 27-03-2008
    igor_andreev

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

    Цитата:
    В результате получаю бесконечный поток  
    ftp -s:ftp.txt  
     
    такое ощущение, что запущен в бесконечном цикле батник ECHO ftp -s:ftp.txt  
    Ниче не понимаю..

    не ты первый, не ты последний... Переименуй свой ftp.cmd или ftp.bat во что-нить другое, он же у тебя сам себя запускает.

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 14:11 27-03-2008 | Исправлено: igor_andreev, 14:12 27-03-2008
    sipok

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

    Цитата:
    Значит - либо ставь на конце  значок \,  
    xcopy /i /Y f:\folder\*.* B:\%%i\  
     либо юзай /i  

     
    При выполнении   xcopy /Y f:\folder\*.* B:\%%i\*.*  
    или                      xcopy /i /Y f:\folder\*.* B:\%%i --- уже пробовал )))
    выдает ошибку : Unable to create directory - B:\4

    Всего записей: 18 | Зарегистр. 15-11-2006 | Отправлено: 15:34 27-03-2008 | Исправлено: sipok, 15:46 27-03-2008
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    sipok
    Возьми B:\%%i\*.* и B:\%%i в кавычки
    и поставь все-таки обратный слэш в конце.

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 16:46 27-03-2008 | Исправлено: Elroir, 17:01 27-03-2008
    Rush

    Уже за тридцать...
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Разрешите пару вопросов...
    1) Посмотрел про замену в файлах через sbs2.com - эта утилитка регэкспы понимает?
    2) А стандартными средствами замену сделать можно? С регулярными, конечно...

    Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 17:03 27-03-2008
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Rush, 2) если сильно постараться, думаю, можно
    for %%a in (TXTSETUP.SIF DOSNET.INF) do more %%a|findstr/v winntbbu.dll>>%%a_&move/y %%a_ %%a
    такую конструкцию использовал для удаления строк, содержащих winntbbu.dll
    также если удалить еще winntbbu.dl? из дистрибутива winnt, мы получим клаcсическую установку winnt с полным описанием процесса установки и необходимыми прогресс барами
    findstr/r — Поиск строк как регулярных выражений
    но опять же тут свои подводные камни есть и это как всегда спецсимволы
    имхо на скриптах с этим проблем никаких нет, и, поскольку ты в них силён, почему бы не использовать их? тем более, что и скорость обработки файлов возрастает в разы даже по сравнению с sbs2.com

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 17:42 27-03-2008 | Исправлено: Nagual, 17:44 27-03-2008
    Blibass

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем привет.У меня такой вопрос,возможно ли реализовать с помощью bat пароль на СD-DVD диск. Что бы с загрузки CD-DVD сразу появлялось строка(окно) для ввода пароля для этого же СD-DVD диска.Если да, то прошу обьяснить как сделать.

    Всего записей: 3 | Зарегистр. 27-03-2008 | Отправлено: 17:48 27-03-2008
       

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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 5
    vu1tur (04-11-2008 23:07): Задачи на bat-файлах 6


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru