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

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

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    день добрый, прошу помочь вот с такой задачей:
    есть к примеру на диске С папка а1 и а2, надо сравникть какие файлы есть в обеех папках и все файли которые не найдены в а2, скопировать с папки а1 в папку а3

    Всего записей: 3 | Зарегистр. 04-03-2009 | Отправлено: 19:38 21-04-2009
    Elroir



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

    Код:
     
    @echo off
    dir /b /a-d c:\a1>list1.tmp 2>nul
    dir /b /a-d c:\a2>list2.tmp 2>nul
    type list1.tmp | findstr /V /G:list2.tmp>list3.tmp  
    for /f "tokens=*" %%a in (list3.tmp) do copy "c:\a1\%%a" c:\a3\>nul
    del /q list*.tmp
     

    Не тестировалось.

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 19:52 21-04-2009
    Bad_BoY



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Есть вот такой bat'ик.

    Код:
     
    net use g: \\servername_1\t
     

    Как сделать так чтоб на машинах с именем АА-1, АА-2, АА-3,... выполнялся батник

    Код:
     
    net use g: \\servername_1\t
     

    с именем ВВ-1, ВВ-2, ВВ-3,...

    Код:
     
    net use g: \\servername_2\t
     

    с именем СС-1, СС-2, СС-3,...

    Код:
     
    net use g: \\servername_3\t
     

     
    И как можн сделать чтобы папка "t" c (\\servername_3\t), (\\servername_2\t) постояно синхронизировались с (\\servername_1\t).
     
    Я так понимаю что код примерно таков но как правильно написать не знаю точно:
     

    Код:
     
    if %Computername%=AA then net use g: \\servername_1\t
    if %Computername%=BB then net use g: \\servername_2\t else net use g: \\servername_3\t
     

    Но у меня 27 машин и они поделены на три групы по именах и висят по 9 штук на каждом сервере.

    Всего записей: 179 | Зарегистр. 22-08-2001 | Отправлено: 20:50 21-04-2009 | Исправлено: Bad_BoY, 16:47 24-04-2009
    wolf0425



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

    Код:
    For %%a In (c:\a1\*.*) Do if not exist "c:\a2\%%~nxa" copy /b "%%~fa" c:\a3\  

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 21:54 21-04-2009 | Исправлено: wolf0425, 21:57 21-04-2009
    ju ja

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    помогите пожалуйста с синтаксисом
    в ком строке вычисляет значения, а в батнике не хочет :'(
    for /r "L:\" %%a in (*.*) do (
    for /f "tokens=1,2,3,4,5 delims=,. " %%c in ("%%~ta") do (
    set f_time=%%f%%g
    if "%f_time:~0,1%"=="0"(
    set t4=%f_time:~1,1%
    ) else (
    set t4=%f_time:~0,2%)
     
    if "%f_time:~3,1%"=="0"(
    set t5=%f_time:~4,1%
    ) else (
    set t5=%f_time:~0,2%)
     
    set /a t6=%%t4%%*60+%%t5%%
     
    if "%time:~0,1%"=="0"(
    set t1=%~time:1,1%
    ) else (
    set t1=%time:~0,2%)
     
    if "%time:~3,1%"=="0"(
    set t2=%time:~4,1%
    ) else (
    set t2=%time:~3,2%)
     
    set /a t3=%%t1%%*60+%%t2%%-15
    if %%t6%% LSS %%t3%% del "%%a"
    )
    )

    Всего записей: 10 | Зарегистр. 22-03-2009 | Отправлено: 21:57 21-04-2009
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ju ja совет:
    пересчитывай f_time как 4 раздельных цифры с домножением на коэффициенты 600 60 10 1, а не как два числа с коэффициентами 60 1, сразу станет меньше заморочек с вычислением
     
    а основная ошибка собственно в том, что например
    set f_time=%%f%%g
    if "%f_time:~0,1%"=="0"  
    писать внутри for нельзя, надо писать или через !f_time:~0,1! или с выносом в подпрограмму
     

    Код:
    @echo off
    setlocal enabledelayedexpansion
     
    for /r "L:\" %%a in (*.*) do for /f "tokens=1,2,3,4,5 delims=,. " %%c in ("%%~ta") do (
    set f_time=%%f
    set /a t6= !f_time:~0,1! * 600 + !f_time:~1,1! * 60 + !f_time:~3,1! * 10 + !f_time:~4,1!
    set /a t3= %time:~0,1% * 600 + %time:~1,1% * 60 + %time:~3,1% * 10 + %time:~4,1%
    if %t6% LSS %t3% echo del %%a
    )
    само удаление для отладки закомментировал
     
    а что такое страшное батник должен делать?
    оставлять файлы что были модифицированы в предыдущие дни но позже текущего времени?

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 22:03 21-04-2009 | Исправлено: wolf0425, 22:45 21-04-2009
    batniki



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Приведите, пожалуйста, рабочий пример цикла с выборкой по значению из ini файла, результатом выборки должна быть переменная

    Всего записей: 50 | Зарегистр. 11-02-2008 | Отправлено: 23:27 21-04-2009
    ruslanxxx

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    kak мне зделать screenshot (десктопа) из cmd,или подскажите чем могу зделать ?!

    Всего записей: 5 | Зарегистр. 12-03-2008 | Отправлено: 05:41 22-04-2009 | Исправлено: ruslanxxx, 05:41 22-04-2009
    ju ja

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    спасибо, я попробую отладить
    он удаляет файлы позже определенного времени

    Всего записей: 10 | Зарегистр. 22-03-2009 | Отправлено: 06:04 22-04-2009 | Исправлено: ju ja, 06:05 22-04-2009
    ATS2000

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ruslanxxx
     
    Можно программками Xnview и nircmd (полезные утилиты в шапке)  сделать
     
    Пример xnview:
     
    xnview.exe -capture=window,d:\screenshot_$.jpg
    xnview.exe -capture=desktop,d:\screenshot_###.jpg  
     

    Всего записей: 276 | Зарегистр. 21-02-2005 | Отправлено: 06:28 22-04-2009
    Mozgius

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Доброго всем дня!
     
    есть бат вида:
     
    "c:\Program files\1cv81\bin\1cv8.exe" CONFIG /Sserver\Base /Nлогин /Pпароль /DumpIB "E:\1C_DB\AutoBackup\ZBE81\ZBE81.dt"
     
    for /F "delims=. tokens=1-3" %%a in ('echo %date%') do rename ZBE81.dt "ZBE81%%c%%b%%a.dt"
     
    нужно в середину вставить проверку вида:
     
    если системная дата = 01 числа любого месяца любого года, то копировать файл с переименованием в другое место

    Всего записей: 7 | Зарегистр. 26-04-2006 | Отправлено: 11:15 22-04-2009
    ipmanyak



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Mozgius
    if  %date:~0,-8% == 01 ...
    Имей ввиду, зависит от формата даты, в данном случае формат даты был  ДД.ММ.ГГГГ
    Тоже самое:  
    if  %date:~0,2% == 01 ...


    ----------
    В сортире лучше быть юзером, чем админом...

    Всего записей: 11740 | Зарегистр. 10-12-2003 | Отправлено: 14:41 22-04-2009
    Alexza



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем привет!
    Помогите плиз. Провайдер Yota (беспроводная сеть wimax), для выхода в инет используется USB модем и софт провайдера "YotaAccess", который, при обнаружении сети сам подключает комп к инету, IP выдается по DHCP, все стоит на серваке 2003. Проблема следующая: периодически (не часто) происходит переподключение, и из-за неизвестных глюков, комп не может получить IP по DHCP, то есть он "зацикливается" на получении айпишника. Известно из форума "еты", что это проблема не только моя но и многих пользователей их сети. Лечится или отключением-включением сетевого интерфейса, либо вытыкания-втыкания usb-модема. Часть задачи решил следующим образом: сделал батник который проверяет интерфейс с инетом и при обнаружении состояния "Недостижимый" перегружает его. Поставил его в "планировщик" с интервалом 1 минута.
    Текст батника:
     
    netsh interface show interface "инет" | find "Недостижимый" >> C:\Yota\%DATE%-yota.log
    IF ERRORLEVEL 1 goto EXITE
    netsh interface set interface "инет" disabled
    netsh interface set interface "инет" enabled
    :EXIT
     
    Но вот остались некоторые ньюансы , цикл получения IP следующий: около 20 сек. идет попытка получения IP, затем секунд 10 происходит переподключение (сетевой кабель не подключен), в момент получения адреса состояние интерфейса "Подключен" и только в 10 секунд переподключения состояние интерфейса определяется как "Недостижимый" (время дано приблизительное).  Как уже писал выше, батник запускается каждую минуту и иногда приходится ждать до 20 минут пока совпадет время запуска батника и состояние интерфейса  "Недостижимый".
    Собственно вопрос: можно ли определить с помощью BAT-файла, что интерфейс в данный момент времени получает адрес по DHCP (то есть не работает) и все-равно его перезапустить. Или можно еще что-нибудь придумать?
    Вопрос второй. Пару раз было следуещее: после 10 минут безуспешного получения IP по DHCP, на "мониторчиках", где "состояние сети" появился восклицательный знак и надпись "Подключение отсутствует или ограниченно", то есть инет опять не работал а интерфейс оределялся как "Подключен" - помогло отключение-включение через диспетчер оборудования модема. Может есть возможность в батнике отключать оборудование?  
    Может у кого по этому поводу есть советы.... Заранее всем спасибо!

    Всего записей: 18 | Зарегистр. 20-12-2005 | Отправлено: 17:46 22-04-2009
    smirnvlad

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

    Код:
     
    @echo off
     
    for /f "tokens=* delims=" %%a in (ini.ini) do call:il %%a
     
    @echo result: _%ini_b_bbn%_
     
    :il
    if _==_%~1 goto:eof
     
    set line=%*
    set sline=%line:"=%
     
    if _%sline:~0,1%_==_[_ (
      if ""%sline:~-1%""==""]"" (
        set section=%sline:~1,-1%
        goto:eof
      )
    )
     
    for /f "tokens=1,* delims==" %%a in ("%line%") do (
      set param=%%a
      set value=%%b
      set ini_%section%_%%a=%%b
    )
     
    @echo line: [%section%] _%param%_ = _%value%_
     
     
    goto:eof
     
     

    Всего записей: 417 | Зарегистр. 31-03-2009 | Отправлено: 18:45 22-04-2009
    mike345S



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите как можно сделать чтобы при перетаскивании мышкой файла на батник, присвоить его имя с полным путем в переменную для использования в этом же батнике?

    Всего записей: 550 | Зарегистр. 31-01-2006 | Отправлено: 19:03 22-04-2009
    smirnvlad

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

    Код:
     
    echo file: %1
    pause
     

    Всего записей: 417 | Зарегистр. 31-03-2009 | Отправлено: 20:12 22-04-2009
    mike345S



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    smirnvlad, спасибо!
    Ларчик просто открывался

    Всего записей: 550 | Зарегистр. 31-01-2006 | Отправлено: 20:18 22-04-2009
    smirnvlad

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Alexza
    может вместо состояния подключения проверять идут ли пинги до нескольких серверов и тогда уже переподключаться
     

    Код:
     
    @echo off
     
    for %%a in (yota.ru;microsoft.com;google.com) do (
     
      ping -n 1 %%a 1>nul
      if ERRORLEVEL 1 (
        echo No pong from %%a
      ) else (
        echo Pong from %%a recived
        goto ok
      )
     
    )
     
    echo Inet down. Restart...
     
    netsh interface set interface "инет" disabled
    netsh interface set interface "инет" enabled
     
    goto:eof
     
    :ok
    echo Inet OK
     
     

     

    Всего записей: 417 | Зарегистр. 31-03-2009 | Отправлено: 20:33 22-04-2009 | Исправлено: smirnvlad, 20:34 22-04-2009
    TechnicsKuzya



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем привет! Помогите, пожалуйста, по быстрому сконвертировать IEPostUpdateInstall.cmd в exe файл

    Код:
     
    if /I "%1"=="/On" goto PostUpdateOn
    if /I "%1"=="/Off" goto PostUpdateOff
    exit
     
    :PostUpdateOn
    REG ADD "HKLM\SOFTWARE\Microsoft\Internet Explorer\Setup\7.0\WU" /v ForcePostUpdateInstall /t REG_DWORD /d 1 /f
    exit
     
    :PostUpdateOff
    REG DELETE "HKLM\SOFTWARE\Microsoft\Internet Explorer\Setup\7.0\WU" /f
    exit
     

     
    Добавлено:
    Спасибо, уже нашел компилятор тут
     
    Добавлено:
    Случайно новой рабочей версии компилятора ни у кого не найдется!?
     
    P.S. Нашел и новую версию, теперь можно скрывать DOS-окно... :)

    ----------
    Все гениальное, просто!
    TechnicsKuzya site

    Всего записей: 495 | Зарегистр. 02-02-2008 | Отправлено: 12:23 23-04-2009 | Исправлено: TechnicsKuzya, 12:59 23-04-2009
    Alexza



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

    Цитата:
    devcon restart *PID_6761*MI_00*
     
    Только возникает вопрос, а не будет ли плохо модему от частых перезагрузок?

    Всего записей: 18 | Зарегистр. 20-12-2005 | Отправлено: 13:44 23-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