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

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

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

    Код:
    4716016979;имя папки 1
    5465465466;имя папки 2
    ...................................
    ...................................

     
    файлов будет много, размер не большой.
     
    заранее благодарен за ответы  

    Всего записей: 205 | Зарегистр. 29-08-2004 | Отправлено: 10:13 27-05-2008 | Исправлено: JohnRD, 11:02 27-05-2008
    GreaseOD

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день.
    Имеется ли возможность в cmd - изменять числовой формат?
    Например:
    Есть определенное число 08 - как переменная
    Нужно ее преобразовать в 8 (без нуля)
    Но не припомощи отщипления нуля, иначе если это будет число 10, то оно тогда превратится в 0 а нужно чтобы было 10!
    Нужно чтобы cmd стал понимать так: 12345678910 11 12 13 14
    А не так 01 02 03 04 05 06 07 08 09 10 11 12 13 14
     
    Заранее спасибо!!!

    Всего записей: 30 | Зарегистр. 10-08-2006 | Отправлено: 14:07 27-05-2008
    igor_andreev

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

    Цитата:
    wget - нет!

    На нет и суда нет Тем не менее это могут сделать wget или curl, telnet и nc тут не нужны.
    JohnRD
    getmail http://pages.interlog.com/~tcharron/getmail.html
    Кроме команд, выдаваемых при запуске без параметров, у нее еще есть команда -dir

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 14:18 27-05-2008
    wolf0425



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

    Цитата:
    Есть определенное число 08 - как переменная
    Нужно ее преобразовать в 8 (без нуля)  
    GreaseOD, формат поправить нельзя, но отрезать ведущий ноль от двузначного числа можно например так
     
    set "var=08"
    set /a var=1%var% - 100
    echo %var%
     
    Добавлено:
    palladium007

    Цитата:
    wget - нет!
    ну нет так нет, изображай wget через telnet сам, флаг в руки.
     
    а вообще поставленная задача решается в такой последовательнсти
    1. wget скачивает html страничку во временный файл
    2. sed конвертирует страничку в строковый список ссылок (в скаченном html строка != ссылка, там может быть как несколько ссылок в строке, так и ссылка в несколько строк кода)
    3. берется случайная строка списка и подставляется в 1. как очередной url

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 14:33 27-05-2008
    Fader



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

    Всего записей: 898 | Зарегистр. 03-01-2004 | Отправлено: 18:17 27-05-2008
    Andryha2005

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как сделать чтобы батник вел лог (в виде текстового файла) своей работы?

    Всего записей: 201 | Зарегистр. 09-07-2005 | Отправлено: 20:02 27-05-2008
    angeltwo

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Чтобы батник вел лог своей работы надо знать коды возврата использующихся в батнике программ
    А потом их обрабатывать конструкцией вида:

    Код:
    if "%ERRORLEVEL%"=="..." echo текст>>filename.log

    Или второй вариант, логи ведут сами программы, которые запускаются в батнике и настраиваются в их же параметрах...
     
    Отправлять полученный лог на мыло можно утилитой blat (см. в шапке)

    Всего записей: 257 | Зарегистр. 09-05-2007 | Отправлено: 20:29 27-05-2008 | Исправлено: angeltwo, 20:34 27-05-2008
    01MDM



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

    Цитата:
    Как сделать чтобы батник вел лог (в виде текстового файла) своей работы?  

    Если надо записать все действия, которые он выполняет, надо убрать `@echo off` и направить вывод батника в файл
     
    Вывод вместе с возможными ошибками:

    Код:
     
    test.cmd 1>test.log 2>&1
     

     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 21:58 27-05-2008
    JohnRD

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

    Всего записей: 205 | Зарегистр. 29-08-2004 | Отправлено: 10:41 28-05-2008 | Исправлено: JohnRD, 11:18 28-05-2008
    Propretor



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Мужики, выручайте, не могу один разобраться!!!  
    Есть простая задача - для для группы файлов, скажем TIFF убрать в названии имени некоторые симвоы, например .ozf2. Делаю все по книжке и инструкции - нифига.
    Вот уж пример состряпал и он не работает.
     
    @SETLOCAL EnableDelayedExpansion
    @SET FILE=
    @FOR %%f in (*.tif) do (SET FILE=%%f & ECHO %FILE% & ECHO %FILE:.ozf2=%)
    @SETLOCAL DisableDelayedExpansion
     
    переменная FILE не принимает поочередно все значения файлов, не смотря на то, что и & и скобки стоят и EnableDelayedExpansion выставлено.
    Что не так?

    Всего записей: 337 | Зарегистр. 12-03-2003 | Отправлено: 11:23 28-05-2008
    angeltwo

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Propretor
     
    Переменная File должна быть не в %%, а в !!

    Код:
    @SETLOCAL EnableDelayedExpansion
    @SET FILE=
    @FOR %%f in (*.tif) do (SET FILE=%%f & ECHO !FILE! & ECHO !FILE:.ozf2=!)
    @SETLOCAL DisableDelayedExpansion

    Всего записей: 257 | Зарегистр. 09-05-2007 | Отправлено: 13:10 28-05-2008
    01MDM



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

    Код:
     
    @echo off
    setlocal
     
    for %%i in (*.tif) do set "file=%%i" && call:write
    goto:eof
     
    :write
    echo %file:.ozf2=%
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 13:10 28-05-2008
    Propretor



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    angeltwo
    01MDM
    Ребята, спасибо за помощь!
     
    01MDM
    Зачем && вместо & ?
     
    angeltwo
    Так:
    @SETLOCAL EnableDelayedExpansion  
    @SET FILE=  
    @FOR %%f in (*.tif) do (SET FILE=!!f & ECHO !FILE! & ECHO !FILE:.ozf2=!)  
    @SETLOCAL DisableDelayedExpansion  
     
    Добавлено:
    01MDM
    Может так?
     
    SETLOCAL EnableDelayedExpansion    
    for %%i in (*.tif) do set "file=%%i" & call echo %file:.ozf2=%  
    SETLOCAL DisableDelayedExpansion  
     
    и почему тогда не так:
     
    SETLOCAL EnableDelayedExpansion    
    for %%i in (*.tif) do set "file=%%i" & echo %file:.ozf2=%  
    SETLOCAL DisableDelayedExpansion  

    Всего записей: 337 | Зарегистр. 12-03-2003 | Отправлено: 13:44 28-05-2008 | Исправлено: Propretor, 13:48 28-05-2008
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Propretor,
     @SETLOCAL EnableDelayedExpansion  
     @FOR %%f in (*.tif) do (SET FILE=%%f & ECHO !FILE! & ECHO !FILE:.ozf2=!)  
     
     

    Цитата:
     и почему тогда не так:
    SETLOCAL EnableDelayedExpansion    
    for %%i in (*.tif) do set "file=%%i" & echo %file:.ozf2=%    

    потому что все %file% заменются значением во время разбора строки, а не вычисляется заново после set "file=%%i"
    А вот !file! - подставляется значение только в момент исполнения

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 14:32 28-05-2008 | Исправлено: wolf0425, 14:41 28-05-2008
    Propretor



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    А зачем кавычки здесь:
    for %%i in (*.tif) do set "file=%%i" & echo %file:.ozf2=%  

    Всего записей: 337 | Зарегистр. 12-03-2003 | Отправлено: 14:51 28-05-2008
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Propretor
    В данном конкретном случае можно и без кавычек. Просто привычка.

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 18:07 28-05-2008
    Belousov



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Очень нужна Ваша помощь.
    Есть каталог очереди печати куда падают файлы посланные на принтер. Имя файла это порядковый номер задания дополненный нулями слева, так чтобы имя всегда состояло из пяти знаков.
    Первое- необходимо при запуске батника найти файл с максимальным номером в имени файла (или самый свежий файл по дате создания). Далее необходимо выделить из имени этого файла номер и при появлении файла с большим номером выполнить нужные действия (к примеру копирование) и так по цыклу, при появлении файла со следующим номером действия повторяются.
    Спасибо.

    Всего записей: 86 | Зарегистр. 06-03-2006 | Отправлено: 19:50 28-05-2008 | Исправлено: Belousov, 19:55 28-05-2008
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Belousov
     
    Попробуй так, батник должен быть за пределами папки C:\Folder  

    Код:
     
    @echo off
    setlocal
     
    pushd "C:\Folder"  
    for /f "tokens=*" %%i in ('dir /b ^| sort /r') do copy "%%i" "D:\SomeFolder"
    popd
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 20:56 28-05-2008
    JohnRD

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    день добрый
     
    кто имел дело с утилитой getmail
     
    если использовать так getmail -s mail.test.domain.ru -u info@test.domain.ru -pw 212121 -xtract -delete
    то она не может вытащить вложения txt xml  
    зато zip doc вытаскивает
     
    с ключем -plain зависает в этом состоянии, висит минут 5-10 распаковывает, но коверкает русский текст.  
    как правильно вытащить русский текст и ускорить.
    для чего этот ключ -forceextract fn: Attempt to extract any encoded messages in 'fn'
     

    Код:
    E:\install\GetMail>getmail -s mail.test.domain.ru -u info@test.domain.ru -pw 212121 -xtract -plain -delete
    Failed to open registry key for GetMail profile , using default.
    Failed to open registry key for GetMail
    Getting info@test.domain.ru's mailbox contents from server mail.test.domain.ru:110
    There are 1 messages on the server.
    Retrieving Message #1 (419753 bytes)  into 'MSG4.TXT'...ok
       Extracting non-encoded message to 80020_616402001N_080401_6024.xml...

     
    какие ключи использовать для этого или с чем это связано?

    Код:
    GetMail v1.33: WinNT console utility to download a mailbox's mail.
    syntax:
      Getmail -u <user> -pw <password> -s <server> [optional switches (see below)]
      Getmail -install [ see install details below ]
      Getmail -profile [-delete | "<default>"] [profile1] [profileN] [-q]
      Getmail -h [-q]
      Getmail -forceextract filename
     
    -install <server> <userid> <password> [<delete> [<xtract> [<try> [<port> [<profile>]]]]]
         : set's POP3 server, login, password, whether to delete or not (Yes/No),
           whether to automatically extract base64/7bit/UU encoded files or not (Yes/No),
           number of tries and port for profile
           (<delete> <xtract> <try> and <port> may be replaced by '-').
     
    -u <userid>   : Specify userid on remote pop3 host
    -pw <password>: Specify password for userid on remote mail host
    -s <server>   : Specify mail server (pop3) to contact
    -nodelete     : Do not delete messages after downloading (default)
    -delete       : Delete messages after downloading
    -noxtract     : Do not extract base64/7bit/UU files after downloading (default)
    -xtract [defname]: Extract base64/7bit/UU encoded files after downloading messages
                       defname is an optional default filename for the extracted file
    -domainstamp  : Prepend sender's domain name to extracted attachments
    -headersonly  : Download only the headers of the message
    -port <port>  : port to be used on the server, defaults to POP3 (110)
    -p <profile>  : send with SMTP server, user and port defined in <profile>.
    -q            : supresses *all* output.
    -n <n>        : Only get 'n' messages
    -m <n>        : Only get message # n
    -b <n>        : Retrieve messages beginning from # n
    -plain        : Extract text/plain segments too (usually ignored)
    -h            : displays this help.
    -try <n times>: how many attempts to access mail.  from '1' to 'INFINITE'
    -ti <n>       : Set timeout to 'n' seconds.
    -forceextract fn: Attempt to extract any encoded messages in 'fn'

     
    спасибо

    Всего записей: 205 | Зарегистр. 29-08-2004 | Отправлено: 15:24 29-05-2008 | Исправлено: JohnRD, 15:59 29-05-2008
    igor_andreev

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

    Цитата:
    если использовать так getmail -s mail.test.domain.ru -u info@test.domain.ru -pw 212121 -xtract -delete  
    то она не может вытащить вложения txt xml  
    зато zip doc вытаскивает  

    Ложь!

    Цитата:
    Retrieving Message #1 (419753 bytes)  into 'MSG4.TXT'...ok  
       Extracting non-encoded message to 80020_616402001N_080401_6024.xml

    А ты уверен, что посылаешь как вложение? Должно быть вот так:

    Код:

       Extracting MIME base64 encoded message to test.txt...
       Undecoded length: 388...decoded length: 291...OK
       Extracting MIME base64 encoded message to test.xml...
       Undecoded length: 6892...decoded length: 5169...OK


    Цитата:
    для чего этот ключ -forceextract fn: Attempt to extract any encoded messages in 'fn'  

    Извлечь вложения из сообщения, которое ранее было получено без опции -xtract

    Код:

    getmail -forceextract MSG1.TXT

     
     
    Добавлено:
    Ты посмотри настройки своей почтовой программы, в Outlook Express это например Сервис-Параметры-вкладка "Отправка сообщений"-Формат отправляемых сообщений. Поставь Кодировка Mime и кодировка текста base64 и еще раз проверь.

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 16:34 29-05-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.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru