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

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



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

    Код:
    @echo off  
    title connect check
    :start  
    ping ukr.net -n 10 || taskkill /f /im "UTM" /t && start UTM  
    cls
    goto :start

     
    по идее так, только нужно точное название и путь к запускаемому приложению.

    Всего записей: 984 | Зарегистр. 04-10-2005 | Отправлено: 22:01 19-03-2009
    Zeral

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

    Всего записей: 2 | Зарегистр. 19-12-2007 | Отправлено: 22:21 19-03-2009 | Исправлено: Zeral, 23:08 19-03-2009
    Mr_Hat



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

    Цитата:
    @echo off  
    title connect check  
    :start  
    ping ukr.net -n 10 || taskkill /f /im "UTM" /t && start UTM  
    cls  
    goto :start  

     
    ||
    ping ukr.net -n 10 || taskkill /f /im "UTM" -  Запускает команду, стоящую за символом ||, только если команда, стоящая перед символом || не была выполнена. В Cmd.exe выполняется первая команда. Вторая команда выполняется, только если первая не была выполнена (полученный код ошибки превышает ноль).  
     
    &&
    taskkill /f /im "UTM" && start UTM -  Запускает команду, стоящую за символом &&, только если команда, стоящая перед этим символом была выполнена успешно. В Cmd.exe выполняется первая команда. Вторая команда выполняется, только если первая была выполнена успешно.

    Всего записей: 984 | Зарегистр. 04-10-2005 | Отправлено: 22:50 19-03-2009 | Исправлено: Mr_Hat, 22:58 19-03-2009
    Serhiy123



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Необходимо узнать количество свободного места на диске в байтах, чтобы потом использовать в качестве параметра в дальнейших командах. В английской Windows последняя строка команды dir имеет следующий вид:
     

    Код:
     
                   2 Dir(s)  30 243 647 488 bytes free
     

     
    исходя из этого использую  следующую конструкцию:
     

    Код:
     
    @echo off
    chcp 866
    dir d: | find "bytes free" > file.txt
    set /p freespace=<file.txt
    del file.txt
    set freespace=%freespace:*)  =%
    set freespace=%freespace:~0,-11%
    set freespace=%freespace:я=%
    echo %freespace%
     

     
    Таким образом на выходе имеем 30243647488
     
    Вопросы:
    1. Как избавиться от использования файла file.txt
    2. Для русской Windows последняя строка команды dir имеет следующий вид:

    Код:
     
                  19 папок  169 624 727 552 байт свободно
     

    Можно написать аналогичный вариант с отсечением фраз "19 папок" и "байт свободно". Как сделать универсальную версию bat-файла, которая бы работала и в английской и в русской ОС?

    Всего записей: 126 | Зарегистр. 05-09-2002 | Отправлено: 14:57 20-03-2009 | Исправлено: Serhiy123, 15:01 20-03-2009
    lorents



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    может у кого есть архивация нескольких файлов через 7-zip в bat-файл?

    Всего записей: 3297 | Зарегистр. 30-12-2007 | Отправлено: 17:04 20-03-2009 | Исправлено: lorents, 17:05 20-03-2009
    Mr_Hat



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Нужна помощь в определении путей к учетным записям всех пользовалетей win xp,
    в частности не активных.
    при помощи cmd  с дальнейшей записью их в системную переменную.
    имя=путь
     

    Всего записей: 984 | Зарегистр. 04-10-2005 | Отправлено: 18:16 20-03-2009 | Исправлено: Mr_Hat, 18:17 20-03-2009
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Serhiy123
    Это неоднократно обсасывалось в предыдущих 5 частях. Советую качнуть утилиту FREEDISK, может в шапке есть и не париться.
    lorents
    В яндексе точно есть.

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 20:23 20-03-2009
    Serhiy123



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven - freedisk.exe классная утилитка, возьму на вооружение!
    Но под эту задачу не подходит: она умеет проверять есть ли на диске указанное количество свободного места. А мне нужно определить сколько всего свободного места есть на диске. Написал вариант попроще, чем предыдущий с dir:  
    fsutil volume diskfree D:    выводит три строки, первая из которых:
    Total # of free bytes        : 55972331520
     

    Код:
     
    fsutil volume diskfree D: | find "Total # of free bytes" > 1.txt
    set /p freespace=< 1.txt
    set freespace=%freespace:*: =%
    echo %freespace%  
     

     
    Но тут вопросы те же:
    1. Как избавиться от 1.txt ?
    2. Как лучше написать вариант для англ. и рус. Windows (русский вариант будет отличаться только  find "Всего свободно байт") ?
     

    Всего записей: 126 | Зарегистр. 05-09-2002 | Отправлено: 21:59 20-03-2009 | Исправлено: Serhiy123, 22:01 20-03-2009
    Elroir



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

    Цитата:
    1. Как избавиться от 1.txt ?  
    2. Как лучше написать вариант для англ. и рус. Windows (русский вариант будет отличаться только  find "Всего свободно байт") ?


    Код:
     
    @echo off
    for /f "tokens=2 delims=:" %%a in ('fsutil volume diskfree C:') do set "freespace=%%a"&goto next
    :next
    if "%freespace:~0,1%"==" " set "freespace=%freespace:~1%"
    echo %freespace%
     


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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 22:28 20-03-2009 | Исправлено: Elroir, 23:53 20-03-2009
    king_stiven

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

    Цитата:
    А мне нужно определить сколько всего свободного места есть на диске.  

    код

    Код:
    FREEDISK /D c:\

     
    и результат

    Код:
     
    D:\досуг\батники\батники утилиты>Freedisk
     
    INFO: 1 261 535 232 bytes free on "C:\" volume.
     
     


    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 22:29 20-03-2009 | Исправлено: king_stiven, 22:35 20-03-2009
    Serhiy123



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
     
    Странно! Тот freedisk.exe, который я выкачал с hxxp://www.dynawell.com/download/reskit/microsoft/win2000/freedisk.zip не выдает такого. При запуске без параметров он просто говорит: "This program checks for free disk space and returns a 0 if there is enough space and a 1 if there isn't. Usage freedisk drive (minimum bytes)"
     
    Можете бросить ссылочку на свой?
     
    Добавлено:
    Elroir
     
    Конгениально! Спасибо большое, проверил на рус. и на англ. - работает. Правда не совсем  понял как, сейчас буду разбираться. Спасибо еще раз!  
     
    PS: разобрался - очень элегантно и выверено, высокий класс!
    PPS: по аналогии написал вариант с dir, т.к. fsutil volume diskfree работает только на NTFS:
     

    Код:
     
    for /f "tokens=3" %%I in ('dir D: /-C') do (set freespace=%%I)
     
    echo  %freespace%  
     

    Всего записей: 126 | Зарегистр. 05-09-2002 | Отправлено: 22:38 20-03-2009 | Исправлено: Serhiy123, 19:57 21-03-2009
    king_stiven

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

    Цитата:
    Можете бросить ссылочку на свой?  

    http://slil.ru/27317708

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 23:06 20-03-2009
    Serhiy123



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven - спасибо за freedisk!  
     

    Всего записей: 126 | Зарегистр. 05-09-2002 | Отправлено: 23:35 20-03-2009
    batniki



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте, помогите, пожалуйста!  
    Нужно написать bat, который лежит в корне всех директорий,  чтобы пробегался по всем директориям в поисках .txt файлов и выполнял для каждого из них команду  
    CB.exe  – rendering  имя_найденого_файла.txt

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

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

    Код:
    for /f "tokens=*" %%c in ('dir *.txt /b /s /a:-d') do echo "%%c"

    Вместо echo вставь свою команду

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 17:33 21-03-2009
    batniki



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven, спасибо, то что нужно!

    Всего записей: 50 | Зарегистр. 11-02-2008 | Отправлено: 17:52 21-03-2009 | Исправлено: batniki, 19:12 21-03-2009
    a500a



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте!
     
    Написал скрипт:

    Код:
    @echo off
    for /f "tokens=2 skip=2 delims=:" %%a in ('ipconfig /all ^| findstr "IP-*"') do (if not defined myip set myip=%%a)
    echo http://%myip%>myip.js

     
    Ответ скрипта в файле:
     

    Код:
    http:// 192.168.0.51

     
    не пойму как убрать пробел в переменной %%a

    Всего записей: 38 | Зарегистр. 20-04-2006 | Отправлено: 18:02 21-03-2009
    batniki



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    a500a,
    http://forum.ru-board.com/topic.cgi?forum=62&topic=15343&start=100#10

    Всего записей: 50 | Зарегистр. 11-02-2008 | Отправлено: 18:08 21-03-2009
    Serhiy123



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

    Код:
     
    echo http://%myip:~1%>myip.js
     

    Всего записей: 126 | Зарегистр. 05-09-2002 | Отправлено: 18:52 21-03-2009 | Исправлено: Serhiy123, 18:53 21-03-2009
    a500a



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

    Цитата:
    a500a  
     
     
    Код:  
    echo http://%myip:~1%>myip.js  
     

     
    Работает!
    Спасибо! Всё получилось кратко и как надо

    Всего записей: 38 | Зарегистр. 20-04-2006 | Отправлено: 18:56 21-03-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