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

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

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

vu1tur (04-09-2010 17:46): http://forum.ru-board.com/topic.cgi?forum=62&topic=21297  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199

   

vu1tur



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

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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 12:40 25-01-2010 | Исправлено: bomzzz, 13:37 20-08-2010
    wolf0425



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

    Цитата:
    В некую папку в хаотичном порядке падают некие файлы. (Факс на модеме)
    Мне нужно организовать копирование этих файлов на сетевой диск.
    На этом сетевом диске есть доступ секретарю, которая сортирует файлы в ручную. Что то удаляет, что то сохраняет.
    а. нужно что бы удалённые ею файлы не восстанавливались.
    б. в случае ошибка записи (малоли что, всё же сетевой ресурс, а не локальный) вывыодилась ошибка/предупреждение.  
    постановка какая-то некачественная.
    1. вывод ошибки записи тебе наверно не очень нужен - нужно повторение неудачного копирования на следующем проходе, после восстановления связи.
    2. чтоб удаленные файлы не восстанавливались - надо их просто повторно не копировать.
    Для этого после успешного копирования файла в сетевую папку надо его удалить из входной (куда факс складывает) - напрочь или в архив переместить. Ну или список скопированного вести и сверяться с ним перед копированием.
    как-то так:

    Код:
    for %%a in (c:\fax_in\*.pdf) do copy "%~fa" \\server\faxex\ && move "%~fa" c:\fax_old\


    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 13:04 07-04-2010 | Исправлено: wolf0425, 13:16 07-04-2010
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    gryu
    да очень расплывчато, и опять словами, вроде в школе математику учили.

    Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 13:21 07-04-2010
    gryu



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

    Цитата:
     
    @echo off
    :start
    set /p tsk="To continue? y/n: "
    echo.
    if not defined tsk goto:start
    if %tsk%==y goto:aga
    if %tsk%==n goto:nea
    goto:err
     
    :aga
    echo 1
    pause
    goto:start
     
    :nea
    echo 2
    pause
    goto:start
     
    :err
    echo error  
    pause
    goto:start
     

     
    Добавлено:
    king_stiven
    Цитата:
    да очень расплывчато, и опять словами, вроде в школе математику учили.
    вы спросили задачу. Я написал.
    Учил. В школе. И не только. Давно. Последний раз "учил математику" году этак в 1989.
    Там правда уже не математика была.
     

    Всего записей: 13035 | Зарегистр. 15-03-2006 | Отправлено: 13:42 07-04-2010
    Cosmogor



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

    Цитата:
    Непредвиденное появление: ts.  

     
    Если хочешь при двойном клике по батнику, то
    правильней будет так:
     
    Код:
    Set /p ts="Enter N/Y: "
    if %ts%==N GOTO NO
    if %ts%==Y GOTO YES
    if not %ts%==definded GOTO ERROR
    :NO
    MSG * Enter N
    EXIT
    :YES
    MSG * Enter Y
    EXIT
    :ERROR
    MSG * ERROR
    EXIT
     
    Не забудь при вводе N/Y регистр букв!

    Всего записей: 230 | Зарегистр. 22-04-2009 | Отправлено: 13:46 07-04-2010 | Исправлено: Cosmogor, 13:50 07-04-2010
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    gryu
    Дано :
    в папку c:\temp упало n файлов file1 file2 file3 ... filen (на момент выполнения первой операции)
    Надо...(скопировать?перенести?) эти файлы в  \\server\faxex\
    ...
    Предположим файл file3 не скопировался...тогда надо...
    ...
    в папку c:\temp упала следущая порция ....
    ...
    и т д

    Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 13:52 07-04-2010 | Исправлено: king_stiven, 14:09 07-04-2010
    gryu



    дикий гусь
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    кстати. как очистить кешь переменной %tsk% в выше приведённом примере?
    а то последняя переменная запоминается и if not defined tsk goto:start  перестаёт срабатывать выдавая tsk  равным предыдущему выбору.  
     
    Добавлено:
    king_stiven
    дано  
    В папку  
    c:\venta\fax\in падают файлы формата {2010-04-07}.tif,  {2010-04-07}(2).tif, {2010-04-07}(3).tif  и т.д.
    Надо.
    Скопировать оные в папку E:\in при условии что папка сетевая. (не суть. можно и на \\server\fax\in)
    Все остальные условия описаны выше.  
    а. файлы в сетевой папке сортируются и в случае их удаления не должны восстанавливатся.
    б. при проблеме записи нужно получить уведомление.  
     
     wolf0425

    Цитата:
    надо их просто повторно не копировать.
    Для этого после успешного копирования файла в сетевую папку надо его удалить из входной (куда факс складывает) - напрочь или в архив переместить.  
    Это я думал. Места мало. Реально мало. Под факсом живёт древнючий ноут с хардом в 4 гига.  
    А бэкапить в сеть, та же проблема.  
    Проблему бэкапа решают cron + WinRAR.  
    Запуск батника на копирование, тоже по cron-у

    Всего записей: 13035 | Зарегистр. 15-03-2006 | Отправлено: 13:52 07-04-2010 | Исправлено: gryu, 14:07 07-04-2010
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    gryu
    тогда папка c:\venta\fax\in  распухнет, так как в условиях нет, чтоб из неё хоть что то удалялось.

    Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 14:13 07-04-2010
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    NIKZZZZ
    и другим
    по вопросу анимации в батниках из Задачи на bat-файлах 7
    нашел случайно этот сабж на википедии - вот
    ASCII art
    ASCII-анимация
    ASCII-анимация является одним из направлений ASCII-арта. В этом направлении рисуются наборы ASCII-картинок, при пролистывании которых получаются мультфильмы. Обычно высота картинки выбирается равной стандартной высоте программы просмотрщика текста, под которую он оптимизируется. При этом смена кадров производится нажатием клавиши Page Down.
     
    Также на PC в среде DOS возможен вывод ASCII-анимации из BAT-файлов через драйвер ANSI.SYS с использованием Esc-последовательностей. Этот метод не получил широкого распространения из-за того, что он требует загрузки драйвера, который редко используется по назначению и занимает место в памяти.
     
    Известны также анимационные ролики, реализованные посредством протокола telnet. Наиболее известным среди них является ASCII-версия IV эпизода космической саги «Звёздные войны»[3][4].
    Ссылка

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 14:14 07-04-2010
    king_stiven

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

    Цитата:
    а. файлы в сетевой папке сортируются и в случае их удаления не должны восстанавливатся.  

    Понял наконец, не не должны восстанавливатся, а не должны повторно копироваться.

    Цитата:
    Скопировать оные в папку E:\in

    Так всё таки скопировать или переместить?

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

    А зачем? может просто снова попробовать скопировать\перенести этот файл при повторной операции?
     
    Добавлено:
    mugil_cephalus
    скинь готовый мульт какой нить

    Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 14:17 07-04-2010 | Исправлено: king_stiven, 14:52 07-04-2010
    Maikl_relax

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

    Цитата:
    скинь готовый мульт какой нить  

    http://www.asciimation.co.nz/

    Всего записей: 8 | Зарегистр. 27-01-2010 | Отправлено: 14:26 07-04-2010 | Исправлено: Maikl_relax, 14:27 07-04-2010
    mugil_cephalus

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

    Цитата:
    скинь готовый мульт какой нить  

    меня тогда интересовала теория, на практике я не то что писать, - искать в инете поленюсь  
    говорю же  
    Цитата:
    нашел случайно этот сабж на википедии  

     
    http://forum.ru-board.com/topic.cgi?forum=62&topic=17154&start=1060#21

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 14:45 07-04-2010 | Исправлено: mugil_cephalus, 14:49 07-04-2010
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Maikl_relax
    Нда, после HD видео как то уже не комильфо.

    Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 14:50 07-04-2010
    gryu



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

    Цитата:
    огда папка c:\venta\fax\in  распухнет, так как в условиях нет, чтоб из неё хоть что то удалялось.

    и хрен с ней.  
    в кроне висит задача winrar-у раз в неделю паковать все файлы по адресу и стирать пакованные.

    Всего записей: 13035 | Зарегистр. 15-03-2006 | Отправлено: 15:14 07-04-2010
    mugil_cephalus

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

    Цитата:
    как то уже не комильфо.  

    а после EaaS и автоматизация администрирования будет "как то уже не комильфо"

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 15:15 07-04-2010
    gryu



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

    Цитата:
    Так всё таки скопировать или переместить?  
    скопировать. первоисточник архивируется "как есть"

    Цитата:
    А зачем? может просто снова попробовать скопировать\перенести этот файл при повторной операции?  
    можно. Более того, хотелось бы.
    А предупреждение всёравно нужно.  
    Что бы небыло накладки - факс послали - его в папке нет - опять посылайте - а на самом деле просто что то с сетью.

    Всего записей: 13035 | Зарегистр. 15-03-2006 | Отправлено: 15:17 07-04-2010
    king_stiven

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

    Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 15:25 07-04-2010
    ivn1978



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

    Всего записей: 192 | Зарегистр. 25-01-2010 | Отправлено: 16:00 07-04-2010 | Исправлено: ivn1978, 17:24 19-04-2010
    king_stiven

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

    Код:
    @echo off
    del L:\temp\2.log
    if not exist L:\temp\1.log echo z> L:\temp\1.log
    for %%a in (L:\temp\*.tif) do (
        for /f %%b in ('echo %%~nxa ^| findstr /V /G:"L:\temp\1.log"') do (
            copy "%%~fa" s:\temp 1>nul 2>nul
            if errorlevel 1 (
                echo %%~nxa>> L:\temp\2.log
            ) else (
                echo %%~nxa>> L:\temp\1.log
            )
        )
    )
    if exist L:\temp\2.log start "" L:\temp\2.log

     
    L:\temp папка куда факс сбрасывает
    s:\temp          куда копируем
    L:\temp\1.log    сюда имена файлов которые благополучно скопировались
    L:\temp\2.log    сюда имена файлов которые не скопировались
     
     
    Если есть файлы которые не скопировались, в конце батника откроется текстовой документ с именами нескопировавшихся файлов, снова запустить батник, и если окошко не вылезло, значит скопировалось.
     

    Всего записей: 2232 | Зарегистр. 17-07-2006 | Отправлено: 17:17 07-04-2010
    ivn1978



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

    Всего записей: 192 | Зарегистр. 25-01-2010 | Отправлено: 18:42 07-04-2010 | Исправлено: ivn1978, 17:24 19-04-2010
    us0r



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ivn1978
    Ковырни утилиту REG, в частности reg export и reg save
     
    Добавлено:
    Что и как использовать в батнеге для получения имени/имён активных ip интерфейсов.
    Надо получать батником (ну и потом обрабатывать) имя подключения к локальной сети (наприер Подключение к локальной сети 1, 2, LAN01, vLAN01 и т.д. надо получить без кавычек и запихнуть в переменные для дальнейшей обработки).
     
    Попробовал вот это: for /f "tokens=2 delims==" %%n in (netsh interface ip show address | findstr \".*\") do echo %%n
    Но в этом варианте не получается обработать кавычки, или ещё какая- то ошибка вылазит...

    Всего записей: 407 | Зарегистр. 06-12-2007 | Отправлено: 19:18 07-04-2010
       

    Страницы: 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 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 8
    vu1tur (04-09-2010 17:46): http://forum.ru-board.com/topic.cgi?forum=62&topic=21297


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru