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

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



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Mercmer
    FC /?

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 10:30 28-08-2008
    mailmartines



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Нужен батник который бы переподключал интернет на удалённой машине.
     
    Есть комп №1 на нем подключение к интернету, на комп №2 нужно запустить батник который отключит подключение к интернету на комп №1 и подключит через определённый промежуток времени (например 10сек).  
     
    Есть полный доступ к двум компам. ОС WinXP
     
    Зарание спасибо.

    Всего записей: 5 | Зарегистр. 13-04-2007 | Отправлено: 01:40 29-08-2008 | Исправлено: mailmartines, 02:00 29-08-2008
    ladgalec

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Часто вижу строки типа такой : %date~1,3%
     
    Хотелось бы знать что это за цифры после date ?

    Всего записей: 6 | Зарегистр. 29-08-2008 | Отправлено: 10:42 29-08-2008
    Smitis



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

    Цитата:
    Часто вижу строки типа такой : %date~1,3%  
     
    Хотелось бы знать что это за цифры после date ?

     
    Это выделение подстроки из переменной
    set /?


    ----------
    Разум когда-нибудь победит

    Всего записей: 2425 | Зарегистр. 09-02-2003 | Отправлено: 10:55 29-08-2008
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Smitis
    для новичка ответ имхо сложноватый
     
    ladgalec
    наверное все-таки %date:~1,3%
     
    попробую разжевать
    запусти у себя такой код
     
    Код:
    @echo off
     
    :: отображаем дату
    echo %date%
     
    :: отображаем число
    echo "%date:~,2%"
    :: отображаем месяц
    echo "%date:~3,2%"
    :: отображаем год
    echo "%date:~6,8%"
     
    :: отображаем число 2 (читаем всю переменную, за исключением последних 8-ми символов)
    echo "%date:~,-8%"
    :: отображаем месяц 2 (читаем всю переменную начиная с 3-го символа и за исключением последних 5-ти символов)
    echo "%date:~3,-5%"
    :: отображаем год 2 (читаем с конца 4 символа)
    echo "%date:~-4%"
     
    pause

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 11:59 29-08-2008 | Исправлено: Nagual, 12:28 29-08-2008
    NovaC

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Насколько я понял этот скрипт перебирает папки и считает их размер.

    Код:
    @echo off  
    if %2==0 goto :eof  
    set /a n=%2-1  
    set size=0  
    for /r %~dpnx1 %%i in (*.*) do (  
      call :sum  %%~zi  
    )    
    :_1  
    if %size%==0 goto _2  
    if not %size:~0,1%==0 goto _2  
    set size=%size:~1%  
    goto _1  
    :_2  
    echo Folder:  %size%  %~dpnx1  
    for  %%i in (%1\*) do (  
      echo File:   %%~zi  %%~dpnxi  
    )    
    for /d %%i in (%1\*) do (  
      call "%~dpnx0" "%%~dpnxi" %n%  
    )    
    goto :eof    
    :sum  
    set s=0000000000000000%1  
    set s=%s:~-16%  
    set size=0000000000000000%size%  
    set size=%size:~-16%  
    set /a sr=1%s:~-8%+1%size:~-8%-200000000  
    set sr=0000000000000000%sr%  
    set sr=%sr:~-16%  
    set /a sl=1%s:~0,-8%+1%size:~0,-8%+1%sr:~0,-8%-300000000  
    set sl=0000000000000000%sl%  
    set sl=%sl:~-8%  
    set size=%sl%%sr:~-8%  
    goto :1  

    но он у меня не отрабатывает. Пишет : "Отсутствующий оператор"
    Запускаю с 2-мя параметрами:
    1. Путь  
    2. Глубина просмотра
    буду благодарен если кто прокомментирует код, а то не совсем понятно что он делает в деталях

    Всего записей: 95 | Зарегистр. 09-01-2008 | Отправлено: 12:51 29-08-2008
    NIKZZZZ



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

    Цитата:
    но он у меня не отрабатывает.

    Ошибка в последней строке:
    "goto :1" , надо   "goto :eof".
     

    Код:
    @echo off  
    ::Если уровень 0 - выход.
    if %2==0 goto :eof  
    ::Подсчет размера каталога
    set /a n=%2-1  
    set size=0  
    for /r %~dpnx1 %%i in (*.*) do (  
      call :sum  %%~zi  
    )    
    ::Удаление незначащих нулей  
    :_1  
    if %size%==0 goto _2  
    if not %size:~0,1%==0 goto _2  
    set size=%size:~1%  
    goto _1  
    :_2  
    ::Вывод каталога и  размера
    echo Folder:  %size%  %~dpnx1  
    ::Вывод файлов и их размеров  
    for  %%i in (%1\*) do (  
      echo File:   %%~zi  %%~dpnxi  
    )    
    ::Рекурсивный вызов функции для всех подкаталогов данного каталога. (уровень меньше на 1)
    for /d %%i in (%1\*) do (  
      call "%~dpnx0" "%%~dpnxi" %n%  
    )    
    goto :eof    
    :sum  
    ::Сложение с удвоенной разрядностью, отдельно складываются левые и правые 8 знаков.  
    ::Получаем 16 значные числа с 0 вначале
    set s=0000000000000000%1  
    set s=%s:~-16%  
    set size=0000000000000000%size%  
    set size=%size:~-16%  
    set /a sr=1%s:~-8%+1%size:~-8%-200000000  
    set sr=0000000000000000%sr%  
    set sr=%sr:~-16%  
    ::Сложение  
    ::Десятичное число не может начинаться с нуля, поэтому слева приписывается 1 , потом результат корректируется.
    set /a sl=1%s:~0,-8%+1%size:~0,-8%+1%sr:~0,-8%-300000000  
    set sl=0000000000000000%sl%  
    set sl=%sl:~-8%  
    set size=%sl%%sr:~-8%  
    goto :eof


    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 16:36 29-08-2008 | Исправлено: NIKZZZZ, 16:58 29-08-2008
    ssnvit

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Имеется ли способ удаления папки типа как файл с расширением.
    Например есть папка TEST. MFT
    Можно ли ее удалить посредством командной строки?

    Всего записей: 156 | Зарегистр. 05-12-2002 | Отправлено: 17:56 29-08-2008
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ssnvit
    Можно. Точно так-же, как и без расширения - комнадой "rd TEST.MFT".

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 18:06 29-08-2008
    sunic

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Приветствую Всех. Прошу большое прощение если оно было но не могу придумать запрос для поисковика
    Стоит задача разбрасывать файлы с головной машины с Хрюшой проф СП2 на остальные по сетки в осноывном ХрПроф СП2 кое где В2К СП4
    Вопрос возможно ли это реализовать с помощью батника или файла скрипта. Поиск в гугле не принес удолитворения.
    Для начала если не сложно для примера можно в отношении одной машины то есть с головной на одну из машин
    Заранее спасибо

    Всего записей: 27 | Зарегистр. 27-11-2006 | Отправлено: 19:43 29-08-2008
    VitRom

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Хорошие слова - "для начала... для примера..." Обещает режим "brain=on" Вот, нарыл в старом хламе (лет 5 назад что-то шаманил у юзеров):

    Код:
    @echo off
    REM перебираем список хостов, начинающихся с "\\odb-", для каждого вызываем обработку
    net view | find /i "\\odb-" > %TMP%\hostlist.tmp & for /f "tokens=1" %%m in (%TMP%\hostlist.tmp) do call :netcopy %%m
    REM прибираемся после окончания списка, стандартная заготовка из другого батника, лишнее так и осталось
    del %TMP%\hostlist.tmp & del %TMP%\dirlist.tmp & del %TMP%\dirlist2.tmp
     
    :netcopy
    echo =================================================
    echo connecting to %1...
    REM киляем старую сессию (если машина недавно открывалась) и переподключаемся как админ
    net use %1\ipc$ /delete & net use %1\ipc$ admin-pass /user:admin-name
    REM забираем права на каталог у юзера, при этом запускаем процесс на удалённой машине
    psexec %1 -s c:\system\xcacls.exe c:\Progra~1\Access~1\LightA~1\LA.exe /d User-name /e /y
    REM копируем заготовленный ярлычок стандартной проги в квикланч "новичков" (у кого ещё нет)
    xcopy /s /y /i /q \\server\install\lan-distr\.links\QL\* "%1\D$\Profiles\%2\Application Data\Microsoft\Internet Explorer\Quick Launch" > nul
    goto :eof

    Разумеется, можно сделать и без временных файлов, вложением всего внутрь for
     
    ЗЫ. А для случая именно поддержания последней версии какой-то проги, включая и саму прогу и каки-либо доп. файлы, есть очень хорошая спец. тулза, сейчас вспоминаю
     
    Добавлено:
    Ага! Тулза зовётся SYNFILES. Хомяк мёртв, остался только дистр, да на всяких софтодромах ещё есть.

    Цитата:
    Программа SYNFILES создана для синхронизации размещаемых на сетевом диске новых версий приложения, с версией, присутствующей на клиентском компьютере.  
    Она обновляет файлы на клиентских машинах, заменяя их старые версии более новыми и запускает уже новую версию программы c компьютера клиента. В настройках можно указать сколько угодно каталогов для синхронизации, а также список программ, которые должны быть запущены до и после синхронизации.
    Программа "синхронизирует" всю структуру файлов приложения, просматривая и обновляя вложенные подкаталоги. У клиента гарантирована "зеркальная копия" файлов с сетевого диска.

    Всего записей: 2967 | Зарегистр. 18-06-2006 | Отправлено: 20:37 29-08-2008 | Исправлено: VitRom, 20:44 29-08-2008
    sunic

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    огромное сппасибо буду пробывать.
    А эти слова
    Цитата:
    Хорошие слова - "для начала... для примера..."  
    просто надо было понимать как хоелось бы рпзобраться самому но не знал от чего толкаться Так сказать точки опоры нет и землю сдвинуть не получается.
    Еще раз спасибо Буду дорабатывать для преподавателей чтоб им легче а мне проще жилось
    И просто врпрроос в батниках ведь есть возможность считывать из фафйла какуцю нибкдь инфу

    Всего записей: 27 | Зарегистр. 27-11-2006 | Отправлено: 12:48 30-08-2008
    king_stiven

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

    Цитата:
    И просто врпрроос в батниках ведь есть возможность считывать из фафйла какуцю нибкдь инфу  

    еъъстьб

    Всего записей: 2167 | Зарегистр. 17-07-2006 | Отправлено: 13:09 30-08-2008
    VitRom

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    или невыспанный, или после-пятница :-D
     
    sunic, я и подумал, что "разобраться самому", и порадовался А то "понаехали забегают тут всякие"...
    Считывание из файла в моём примере в 3-й строке после амперсанда, ещё вариант - команда type, ещё - find, ещё много других, которые все читают из, и ещё есть спец. утилиты для конкр. случаев, например, для работы с ИНИ и т.п. (в шапке).
     
    Добавлено:
    ЗЫ. если твоя задача хоть как-то связана с обновлением какой-нить проги или её данных, присмотрись к синфайлз. Её изюминка в том, что синхро делается при запуске этой самой "какой-нить" программы - ярлычок на прогу заменяется ярлычком на синфайлз, и он при запуске делает синк и потом сразу же стартует прогу.

    Всего записей: 2967 | Зарегистр. 18-06-2006 | Отправлено: 13:39 30-08-2008
    episcopZo

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем моё почтение. Задача: в ключе реестра храниться путь к файлу. В каталоге с этим файлом есть еще один, имя его заранее известно, например trpr.exe. Как в бат файле можно запустить этот самый trpr.exe? Спасибо за ваше внимание.

    Всего записей: 1 | Зарегистр. 30-08-2008 | Отправлено: 13:53 30-08-2008
    sunic

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

    Цитата:
    ЗЫ. если твоя задача хоть как-то связана с обновлением какой-нить проги или её данных, присмотрись к синфайлз

    нет намного банальнее разбрасывание методичек и всякой лабуды на крмп ученика А Эта всякая лабуда заранее готовиться преподом
    Еще раз огромный санкс
    Дальше буду фантазировать

    Всего записей: 27 | Зарегистр. 27-11-2006 | Отправлено: 14:49 30-08-2008
    Jay ru

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Уважаемые БАТ ГУРУ, помогите ПЛЗ решить вопрос:
    Сделал батник для автоматической настройки системы т.е. Имя компа, ip, шлюз. и др.
    Немогу поменять рабочую группу.
     
    Какой командой енто меняется??
     
    Для изменения имени машины использовал compname.exe стыриной с этого форума, работает на ура, может есть что нить подобное для рабочей группы...
     
    Заранее спасибо...

    Всего записей: 2 | Зарегистр. 30-08-2008 | Отправлено: 16:51 30-08-2008
    ssnvit

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Имеется замечательная команда forfiles, которую я успешно применяю для удаления старых файлов по аргументу /d. Можно ли и как применить данную команду для удаления не только файлов, но и папок. Например в папке c:\test находятся файлы, созданные 30 дней назад. Задача - удалить эти файлы вместе с папкой. Или же надо подсчитать, что папка пустая и потом уже удалять ее. Может у кого есть соображения?

    Всего записей: 156 | Зарегистр. 05-12-2002 | Отправлено: 23:20 30-08-2008
    01MDM



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

    Цитата:
    Задача - удалить эти файлы вместе с папкой.


    Код:
     
    rd /s /q c:\test
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 03:46 31-08-2008
    azamapendrus



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Необходимо копировать все файлы *.sys со всех дисков (со всеми атрибутами-системный, архивный,скрытый, только для чтения и.т.д.) в папку , которая должна создаваться в том месте ,откуда батник запущен.  
    Что-то типа такого:
    @echo on
    xcopy c:\*.sys /s /q /h /y  
     
    здесь только для c:, и копирует вместе с папками,а нужны только файлы.

    Всего записей: 19 | Зарегистр. 24-08-2008 | Отправлено: 14:20 31-08-2008 | Исправлено: azamapendrus, 14:24 31-08-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.Board
    © Ru.Board 2000-2020

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru