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

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



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем Доброго времени суток!!!
     
    Задача такова, при копировании файла на сетевую машину проверяется код ответа  
    %ERRORLEVEL%, если ошибки копирования нет пакет продолжает работу, если присутствует ошибка производится переименование копируемого файла и он остается в тойже папке (но под другим именем).
     
    Вопрос:
    1) Как можно добавить в имя файла %time%? при попытке добавления происходит ошибка, вероятно вследствии того, что в возврате команды time присутствуют знаки неприменяемые в назв. файлов.
     
    Если нет возможности добавить к назв. файла времени, то возникает второй вопрос:
     
    2) Как сделать так чтобы файлы создавались с порядковым номером, т.е. как говорилось выше в описании задачи, при возникновении ошибки файл переименовывается и остается на своем месте, но под другим именем, надо чтоб данный файл не затирался при следующем выполнении задачи, а создался новый с именем на порядок выше, т.е. есть файл rezerv.rar, он переименовался в rezerv_error_copy_%date%.rar, а при следующем выполнении задачи должен создатся файл rezerv_error_copy_%date%_1.rar
     
     
    Данная задачи работает каждые 30 минут и один параметр %date% не спасает, так как за сутки будет 48 файлов с одной датой.
     
    Заранее очень благодарен за помощь.

    Всего записей: 15 | Зарегистр. 08-07-2009 | Отправлено: 10:39 04-06-2010
    mugil_cephalus

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

    Код:
    for /f "eol=." %%i in ('wmic os get LocalDateTime ^|more +1') do set "var=%%i"
    set "var=%var:~6,2%%var:~4,2%%var:~2,2%_%var:~8,2%%var:~10,2%"
    echo._%var%_
    pause

    переменная var содержит дату и время для добавления в нейминг файлов

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

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Den13V
    Да, из-за двоеточия, попробуйте например так:

    Код:
    set timenew=%time:~0,5%
    set timenew=%timenew: =0%
    set timenew=%timenew::=.%

    используйте переменную %timenew% - показывать будет как "часы.минуты", время будет указанно на момент обработки скрипта, соответственно если его нужно обновить - делайте переходы.

    Всего записей: 327 | Зарегистр. 06-09-2006 | Отправлено: 11:03 04-06-2010 | Исправлено: Altus, 11:04 04-06-2010
    user5nov

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте, помогите написать батник или какой нибудь другой скрипт.
    Задача такая: каждый час у пользователя всплывает сообщение, о чём либо (это примерно поздравления).
    Как я вижу реализацию: написать батник с запросом текста из текстового файла, в котором расположены эти сообщения. Некоторые из сообщений там могут быть длинными, или содержать много строк.
    Запуск скрипта допустим осуществлять через Назначенные задания в виндовсе.
    Думаю проблема в том как он будет считывать оттуда текст. Вдруг перейдёт в конец считывать или допустим возьмёт информацию люшнюю и выведет на экран пользователя.

    Всего записей: 112 | Зарегистр. 19-10-2005 | Отправлено: 11:05 04-06-2010
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    user5nov
    TYPE 1.txt
    Также есть много утилит, чтоб выводить содержимое текстового файла в стандартное окно сообщения вынды.

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 11:23 04-06-2010
    user5nov

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

    Всего записей: 112 | Зарегистр. 19-10-2005 | Отправлено: 11:26 04-06-2010
    king_stiven

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

    Цитата:
    Полезные утилиты  

    может и nircmd может

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 11:43 04-06-2010
    user5nov

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
    спасибо за подсказку, но я полный нуб в этом деле, может подскажешь как это решается ? прогу то скачал, а толку ((
     
    Добавлено:
    echo off  
    @start /MIN nircmd.exe infobox "У тебя сегодня день рождения ? Желаем счастья и добра! И вечной юности цветенья." "ВНИМАНИЕ!!!  ВНИМАНИЕ!!!  ВНИМАНИЕ!!!"
     
    получилось такое. На большее моск не способен.
     
    Пмогите плиз.

    Всего записей: 112 | Зарегистр. 19-10-2005 | Отправлено: 11:48 04-06-2010 | Исправлено: user5nov, 11:51 04-06-2010
    us0r



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

    Цитата:
    start "" cmd /k "title yourtitle &pause &exit"

    А что это делает?

    Всего записей: 406 | Зарегистр. 06-12-2007 | Отправлено: 12:08 04-06-2010
    king_stiven

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

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 12:10 04-06-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mugil_cephalus
    Цитата:
    я смотрел в help'e hh ntcmds.chm - там в примерах по синтаксису все taskkill'ы с фильтрами требуют наличия в команде ключа /IM  
    опущенно специально: если какое ещё окно сдуру установило title killme - тo наверно оно тоже хочет чтоб его закрыли
     

    Цитата:
    Метка может включать пробелы, но не может включать другие разделители, такие как точка с запятой или знак равенства. В команде goto используются только первые восемь знаков метки. Например, следующие метки эквивалентны и рассматриваются как :hithere0:  
    не знаю где используется только 8, но cmd.exe от xp sp3 eng - различие в 10м знаке вполне замечает, :timerloop и :timerloop2 - считает разными метками
     
     

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 12:10 04-06-2010 | Исправлено: wolf0425, 12:11 04-06-2010
    us0r



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

    Цитата:
    set count=30  
    set key=%random%  
    start /b "" cmd.exe /q /k "pause & exit & %key%"  
     
    :timerloop  
    title %count% Ready: %~nx1 %ssize%%%    
    set /a count -= 1  
    ping -n 2 localhost 1>nul 2>nul  
    if %count% leq 0 (title killme) & taskkill /f /t /fi "windowtitle eq killme" 2>nul 1>nul  
    wmic process where (name='cmd.exe') get commandline | 1>nul findstr /r /b cmd.*pause.*exit.*%key% && goto :timerloop

    Что за код?

    Всего записей: 406 | Зарегистр. 06-12-2007 | Отправлено: 12:10 04-06-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    us0r ждем 30 секунд или нажатия на любую кнопку, потом закрываемся независимо от того нажали или нет (нажали - закрываемся сразу).  
    в принципе можно переделать что не закрываемся, а куда-то дальше идем, если кому надо.

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 12:14 04-06-2010
    us0r



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    mugil_cephalus
    Эммм...
    А сделать список процессов CMD до запуска окна и сравнить его со списком сразу после запуска по определённым критериям- атеизм не позволяет?
    Типа:
    tasklist | findstr >> куда- нить 1 (переменные?)
    start blablabla & tasklist | findstr >> куда- нить 2
    сравнить куда-нить 1 и куда- нить 2 /параметры | taskkill /PID

    Всего записей: 406 | Зарегистр. 06-12-2007 | Отправлено: 12:16 04-06-2010 | Исправлено: us0r, 12:17 04-06-2010
    wolf0425



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

    Цитата:
    А сделать список процессов CMD до запуска окна и сравнить его со списком сразу после запуска по определённым критериям- атеизм не позволяет?  
    у меня между запуском окна и его закрытием - в системе иногда стартует/завершается ещё 5 окон, из них три+ - других потоков того же батника. какая польза от списка то?
    и никаких посторонних окон этот код  НЕ запускает.

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 12:18 04-06-2010 | Исправлено: wolf0425, 12:24 04-06-2010
    us0r



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Необязательно ждать закрытия- там же сразу после запуска ищется новое окно/копия CMD. Т.е. Смысл скорее получить PID новосозданного процесса. А шанс получить именно его- велик. И не париться с названиями окон, а прибивать по PID

    Всего записей: 406 | Зарегистр. 06-12-2007 | Отправлено: 12:22 04-06-2010
    wolf0425



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

    Цитата:
    А шанс получить именно его- велик. И не париться с названиями окон, а прибивать по PID
    шанс получить правильный pid - отличается от 100%
    что должен будет делать батник, если между стартом и проверкой добавилось ДВА+ новых pid? монетку подбрасывать?
     
    прибивать по названию окна или по pid - разницы совершенно никакой, названием СВОЕГО окна батник управляет сам. а вот проблемы получить pid именно собственного порожденного процесса, когда соседняя копия батника делает то же самое - заведомо есть.
     
     
     

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 12:28 04-06-2010 | Исправлено: wolf0425, 12:33 04-06-2010
    Den13V



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Altus
     
    Огромное человеческое СПАСИБО, помогло, только строка
     
    set timenew=%teminew: =0%
     
    не нужна, и новое имя файла пришлось взять в ковычки, т.к. после ввода времени в имя файла появляется пробел в конце времени (rezerv_error_copy_11.26 .rar).
     
    Подскажи пожалуйста еще как вывести время в формате часы:минуты:секунды

    Всего записей: 15 | Зарегистр. 08-07-2009 | Отправлено: 12:33 04-06-2010
    wolf0425



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

    1. строка нужна, если батник запустишь до 10 часов утра с неудачными настройками системы.
    2. пробел появляется потому что ты его сам написал в конце строки set timenew=%teminew: =0% или какой-то предыдущей
    3. правильно было писать set "timenew=%teminew: =0%"

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 12:35 04-06-2010 | Исправлено: wolf0425, 12:38 04-06-2010
    Den13V



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

    Цитата:
    1. строка нужна, если батник запустишь до 10 часов утра.

     
    а что будет если запущу до 10 утра без этой строки?
     
    когда стоит эта строка в имени файла вместо времени стои 0.
     

    Цитата:
    2. пробел появляется потому что ты его сам написал в конце строки set timenew=%teminew: =0%  
    3. правильно было писать set "timenew=%teminew: =0%"

     
    пробел остается и так и эток.

    Всего записей: 15 | Зарегистр. 08-07-2009 | Отправлено: 12:39 04-06-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