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

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

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

vu1tur (25-01-2010 12:41): лимит страниц, продолжение: http://forum.ru-board.com/topic.cgi?forum=62&topic=19668  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117

   

vu1tur



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

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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 11:37 26-05-2009 | Исправлено: TechnicsKuzya, 13:53 27-12-2009
    maxxx_12345



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

    Код:
     
    @break on
    @echo on
    :start
    set /a i=0
    :loop
    @echo %i%
    rasdial %i%  
    if ERRORLEVEL == 0 break
    if %i% == 8 goto start
    set /a i+=1
    goto loop
    break
     

     
     
    Вроде работает, перебирает. Но на ERRORLEVEL никакого внимания... Как сделать проверку на установление соединения?
     
    Мне кажется, в шапку надо добавить ссылочку: http://www.oszone.net/3673
     
     
     
    Добавлено:
    Всё, нашёл как надо:
     
     

    Код:
     
    @break on
    @echo on
    :start
    set /a i=0
    :loop
    rasphone -d %i%
    if %ERRORLEVEL% == 0 exit
    if %i% == 9 goto start
    set /a i+=1
    goto loop
    exit
     

     
    В таком варианте устанавливается соединение с учётными данными, забитыми в соединении, а не от имени текущего пользователя. Вроде как подрубился на 5-й попытке. Единственный нюанс - нужно отключить автоповтор соединения, либо сделать его маленьким (2-3 раза) с минимальными интервалами.  Всё работает.

    Всего записей: 28 | Зарегистр. 01-03-2007 | Отправлено: 13:26 28-11-2009 | Исправлено: maxxx_12345, 14:29 28-11-2009
    vigogne



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    Огромное, человеческое спасибо! Действительно, все гениальное просто! )

    Всего записей: 11 | Зарегистр. 16-03-2007 | Отправлено: 14:39 28-11-2009
    s1nfrompvl



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    и снова здрасте.. пишу новый скрипт для автоматизации своей работы...
     
    в общем есть переменная %var1%
    с помощью команды %var1:~1,-1%
    я могу отрезать первый и последний символ.. это хорошо.. НО как мне отрезать нужное кол-во символов если они храняться в других переменных..
    например %num_begin% и %num_end%
    вариант с  
    %var1:~%num_begin%,%num_end%%, конечно не прокатывает..
     
    пробовал через setlocal enabledelayedexpansion и знаки !, тоже чтото не получилось
    вот пример:

    Код:
     
    setlocal enabledelayedexpansion
    set test=qwerty
    set One=1
    set Two=-1
    set test2=%test:~!One!,!Two!%
    echo %test%
    echo %test2%
     

    Всего записей: 62 | Зарегистр. 07-04-2008 | Отправлено: 19:51 28-11-2009
    01MDM



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

    Код:
     
    set test2=!test:~%One%,%Two%!
     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 20:37 28-11-2009
    s1nfrompvl



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM, спасибо большое.. ^__^..

    Всего записей: 62 | Зарегистр. 07-04-2008 | Отправлено: 07:17 29-11-2009
    batniki



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите, как выполнить все exe файлы в папке и в подпапках?

    Всего записей: 50 | Зарегистр. 11-02-2008 | Отправлено: 20:08 29-11-2009
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    batniki
    Тебе не пора ли самому сообразить? Кажется тебе постоянно пишем.

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 20:13 29-11-2009
    batniki



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

    Всего записей: 50 | Зарегистр. 11-02-2008 | Отправлено: 20:27 29-11-2009 | Исправлено: batniki, 20:28 29-11-2009
    wolf0425



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

    Цитата:
    не обессудьте, крайне неудобный поиск и навигация по сообщениям..
    Какая нафигация?
    кто-то виноват что ты искать браузером в пределах одной простыни (версия для печати) не научился?
    и прочти наконец for /?  и dir /?

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 20:58 29-11-2009 | Исправлено: wolf0425, 01:18 30-11-2009
    BVV63



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем привет. Есть вопрос для лучшего понимания. Ранее я считал что операторы && и || используют код возврата (просто являются краткими синонимами выражений If %ErrorLevel%==0 и If ErrorLevel 1). Экспериментально выяснил, что команды Del и RD не возвращают ErrorLevel. Т. е. он после них всегда 0. Напр., создаю каталог D:\1 и аттрибутами безопасности NTFS запрещаю доступ к нему для всех. Если теперь выполнить команду

    Код:
    RD /Q /S D:\1 & Echo %ErrorLevel%

    то получаю
    Access is Denied.
    0
    Соответственно, команда

    Код:
    RD /Q /S D:\1 & (If ErrorLevel 1 Echo Error)

    ошибку не выведет. А вот команда

    Код:
    RD /Q /S || Echo Error

    выведет. Стал быть код возврата не имеет отношения к операторам && и ||. Так какие тогда критерии используют данные операторы?
     
    Добавлено:

    Цитата:
    Т. е. он после них всегда 0.

    Поправлюсь. Команды RD и Del код возврата не меняют, каким он был до них, такой останется и после них.

    Всего записей: 3542 | Зарегистр. 17-08-2009 | Отправлено: 08:18 30-11-2009 | Исправлено: BVV63, 08:20 30-11-2009
    192168

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    В течение дня несколько раз архивируется файл. В имени файла должен быть номер за день.  Как сделать средствами bat?. Спасибо.

    Всего записей: 19 | Зарегистр. 10-11-2006 | Отправлено: 12:41 30-11-2009
    BVV63



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    192168, дружище, Вы же уже задавали этот вопрос:
    http://forum.ru-board.com/topic.cgi?forum=62&bm=1&topic=18991#1
    Если мой ответ Вас не устроил, напишите, чем? Возможно, я неправильно понял Ваш вопрос.

    Всего записей: 3542 | Зарегистр. 17-08-2009 | Отправлено: 12:46 30-11-2009
    192168

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Извините, не сразу нашел ответ на мой вопрос; ответил на сообщение от 08:30, отвечаю и здесь.
    Файл формируется архивированием некоего исходного по маске. Одно место в маске должно быть номером файла в течение дня.

    Всего записей: 19 | Зарегистр. 10-11-2006 | Отправлено: 12:51 30-11-2009
    BVV63



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    192168
    Угу и я уже ответил там, отвечу и здесь.

    Цитата:
    Файл формируется архивированием некоего исходного по маске.

    Можно подробнее? Желательно всю строку команды.
     
     
    Добавлено:
    На 85-й странице данной темы NIKZZZZ даёт ответ vmazur47 (прошу прощения, не знаю как давать ссылки на посты, а не на страницы). Это не то, что Вам нужно?

    Всего записей: 3542 | Зарегистр. 17-08-2009 | Отправлено: 12:57 30-11-2009 | Исправлено: BVV63, 13:39 30-11-2009
    mugil_cephalus

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

    Цитата:
    Код:  
    set test2=!test:~%One%,%Two%!  
     

    вовремя - мне этот код тоже помог - я как раз мучился вставить в variable модификатор аргумента
    example

    Код:
    set "var%~n0=val"
    echo _!var%~n0!_

     

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 13:54 30-11-2009
    192168

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    К сожалению, не то.
     
    Хочется так: arj a -h#TF982N SFile.ext1
    N - номер файла.
    TF982 - постоянная часть маски.  
     
    При первой такой процедуре в течение дня, соответственно, N=1, при следующем архивировании файла с именем SFile.ext1 N=2, и т.д.
    На следующий день нумерация должна начаться опять с 1.
     

    Всего записей: 19 | Зарегистр. 10-11-2006 | Отправлено: 13:54 30-11-2009
    mugil_cephalus

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

     
     
    BVV63

    Цитата:
    прошу прощения, не знаю как давать ссылки на посты, а не на страницы

    url#sn, где sn - номер сообщения
    например, -  http://forum.ru-board.com/topic.cgi?forum=62&topic=17154&start=1740#15

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 13:58 30-11-2009
    yurkesha



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    192168
    Если с наименьшими услиями то это проще реализовать при помощи консольной версии RAR. Опция -ag. Пример использования:
    rar.exe a -rr3p -m5 -s -agNN <постоянная часть маски>.rar <файл для архивации>
    Но обращаю внимание - нумерация будет производится по всем созданным архивам с такой маской! То есть вам надо либо обеспечивать перемещение архивов прошлого дня куда-нибудь, либо обеспечить уникальность постоянной маски. Например добавив к ней дату. Например так:
    -ag+YYYY{_}MM{_}DD-NN

    ----------
    Всем непричастным рекомендую прогулки на свежем воздухе

    Всего записей: 2741 | Зарегистр. 15-12-2003 | Отправлено: 14:13 30-11-2009
    BVV63



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    192168
    1. Архив создаётся в одном каталоге, либо разных (предположим, в 1-й день - в одном, во 2-й - в следующем)?
    2. N - одного разряда хватит? В смысле может ли быть 10 и более архивов за день?
    Сейчас я уже ухожу, если никто Вам не ответит, подумаю завтра.
     
    Добавлено:
    О, уже вроде ответили.

    Всего записей: 3542 | Зарегистр. 17-08-2009 | Отправлено: 14:14 30-11-2009
    192168

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Архив создается в один и тот же каталог.
    N<10
     
    Добавлено:
    yurkesha
    Спасибо.  
    Архиватор arj без варииантов.
    Уникальность имен обеспечивается датой в имени файла, в постоянной части маски.
    Типов архивируемых файлов несколько.

    Всего записей: 19 | Зарегистр. 10-11-2006 | Отправлено: 14:15 30-11-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 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 7
    vu1tur (25-01-2010 12:41): лимит страниц, продолжение: http://forum.ru-board.com/topic.cgi?forum=62&topic=19668


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru