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

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

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Oleg93
    FreeSpace.vbs http://www.robvanderwoude.com/wmiexamples.php#F

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 10:32 25-03-2010
    AlexanderBV

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите плз, возможно ли решить следующую задачу :
    Необходимо из одной папки скопировать самый большой и ранний сегодняший файл и самый маленький и последний вчераший в другую директорию.
     
    Ранее было это, но сдесь не учитывался размер и именно последний вчерашний файл:
     
    set name_date=%date:~11,2%%date:~6,2%%date:~3,2%
    if not exist c:\%name_date%\nul md c:\%name_date%
    move /y d:\1*.* c:\%name_date%
     
    rem Определение сегодняшней даты mm.dd.yy
    set now_date_copy=%date:~6,2%-%date:~3,2%-%date:~9,4%
     
    Если первая утренняя порция уже обработана:
    if exist c:\%name_date%\%name_date%.log goto end
     
    Копирование файлов с временем не ранее сегодняшней даты
    xcopy /y /d:%now_date_copy% c:\%name_date%\*.* c:\s > %name_date%.log
     
    Копируем вчерашний файл
    forfiles.exe /p c:\%name_date% /s /m *.* /d -1 /c "cmd /c xcopy /y c:\%name_date%\*.* c:\s" > %name_date%.log
     
    Помещение log-файла в требуемое место в случае успешного копирования
    for %%A in (%name_date%.log) do if not %%~zA==24 move /y %name_date%.log c:\%name_date%
     
    :end
     
    Заранее благодарен
     
    Добавлено:
    Прошу прощения за дубль )

    Всего записей: 80 | Зарегистр. 28-10-2003 | Отправлено: 19:40 25-03-2010 | Исправлено: AlexanderBV, 11:33 26-03-2010
    wolf0425



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

    Цитата:
    Необходимо из одной папки скопировать самый большой и ранний сегодняший файл и самый маленький и последний вчераший в другую директорию.  
    так самый большой или самый ранний? это два разных способа сортировки, запросто дающих два разных имени файла.
    Аналогичный вопрос про вчерашний последний/короткий.
    Если не знаешь как объяснить  -пиши примеры времени+размера и объяснение - который надо выбрать.
     
    и формат даты в своей системе заодно укажи, а то у меня твой код дает  
    name_date=2003
    now_date_copy=20-03-0
     
     

    Цитата:
    Прошу прощения за дубль )
    чем просить прощения - лучше бы его прибил

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 19:43 25-03-2010 | Исправлено: wolf0425, 19:58 25-03-2010
    king_stiven

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

    Цитата:
    Необходимо из одной папки скопировать самый большой и ранний сегодняший файл и самый маленький и последний вчераший в другую директорию.  

    Чота вспомнилось, сегодня раки маленькие. а вот вчера большие но по 5 рублей.

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 20:13 25-03-2010
    l3ha

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    вот-с, задача, ппц условие понятное, просветите плз кто...
     
       2.Создать пакетный  командный  файл,  выполняющий нижепере-
    численные действия. В качестве формальных параметров использо-
    вать имена файлов и подкаталогов (не менее двух).  Запросы для
    пользователя оформить в цветную рамку.
        Имеется необходимость периодически проделывать следую-
    щие действия:  скопировать текстовый файл с диска О: на вирту-
    альный диск (если вирт.диск отсутствует,  создать на диске  О:
    поддиректорий  и  скопировать  туда  файл) с проверкой наличия
    этого файла на диске О:,  создать на диске О:  поддиректорий и
    скопировать туда файл с виртуального диска.
         Перечисленные действия повторить 3,4 или 5 раз по  выбору
    пользователя с разными файлами.
     
    P.S. знаю, что запросы и рамку надо через утилиту BE делать (что фигня)..
    Собственно интересует смысл 2 и последнего предложений (как оное надобно?.. не втыкаю)

    Всего записей: 2 | Зарегистр. 25-03-2010 | Отправлено: 20:22 25-03-2010
    TAVulator



    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Ребят, подскажите как реализовать такое:
    Есть текстовой файл со списком имен директорий, например:
    111
    222
    333
    еее
     
    Нужно обойти все эти директории и все поддериктории в них и в каждой проделать определенное действие, например вывести список файлов в них.

    Всего записей: 12 | Зарегистр. 03-08-2008 | Отправлено: 23:03 25-03-2010
    lorents



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Не подскажите, как можно сделать, чтобы батник отображал кириллицу правильно, а не символами?
    И как можно сделать, чтобы батник отображал некий текст, типа

    Цитата:
    Версия батника 1.0.0.0 от 25.03.2010
    Для продолжения нажмите Enter

    Всего записей: 3297 | Зарегистр. 30-12-2007 | Отправлено: 00:07 26-03-2010
    l3ha

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

    Цитата:
    Не подскажите, как можно сделать, чтобы батник отображал кириллицу правильно, а не символами?  
    И как можно сделать, чтобы батник отображал некий текст, типа  
     
    Цитата:Версия батника 1.0.0.0 от 25.03.2010  
    Для продолжения нажмите Enter

    1. в DOS кодировке (866) сохраняй батник
    2. echo Версия батника 1.0.0.0 от %date%
        echo Для продолжения нажмите Enter
        pause>nul
    но тут не enter, а любая клавиша (... может можно просто pause, без echo с enter-ом?)

    Всего записей: 2 | Зарегистр. 25-03-2010 | Отправлено: 00:19 26-03-2010
    AlexanderBV

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    Забыл написать - Операционная система Windows 2000 Server и формат даты отличается от ХР, а какой именно, завтра точно скажу. По поводу сортировки действительно сумбурно написал. Ситуация следующая, в папке есть файлы:
    12345678.001  26.03.2010  12:00   100 Кб
    12345678.002  26.03.2010  07:00   800 Кб
    12345678.003  25.03.2010  12:00   700 Кб
    12345678.004  25.03.2010  23:00   200 КБ
    и т.д. нужно скопировать только 2 файла 12345678.002 и 12345678.004

    Всего записей: 80 | Зарегистр. 28-10-2003 | Отправлено: 01:06 26-03-2010
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    lorents
    Цитата:
    Не подскажите, как можно сделать, чтобы батник отображал кириллицу правильно, а не символами?  
    фонт у консоли переключи на юникодный, если 1251 хочешь нормально видеть. Или действительно пиши батник в 866 кодировке.
     
    TAVulator
    Цитата:
    Нужно обойти все эти директории и все поддериктории в них и в каждой проделать определенное действие, например вывести список файлов в них.

    Код:
    for /f "delims=" %%a in (file.lst) do for /r %%a %%i in (*.*) do dir "%%~fi"

     
    AlexanderBV
    Цитата:
    По поводу сортировки действительно сумбурно написал.  

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

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 02:43 26-03-2010 | Исправлено: wolf0425, 02:45 26-03-2010
    batniki



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите. Нужно завершить процессы, не относящиеся к списку исключения (winrar.exe, blabla.exe, ...) и превышающие 64 mb RAM.

    Всего записей: 50 | Зарегистр. 11-02-2008 | Отправлено: 06:50 26-03-2010
    patrion



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Привет всем!
    У меня 2 вопроса!
    1) как сделать, что бы bat-ник читал пробелы?
    2)Как через bat-ник переименовывать файлы?

    Всего записей: 69 | Зарегистр. 29-09-2009 | Отправлено: 08:57 26-03-2010
    wolf0425



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

    Цитата:
    1) как сделать, что бы bat-ник читал пробелы?
    в смысле?
     

    Цитата:
    2)Как через bat-ник переименовывать файлы?
    ren /?
     

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 08:59 26-03-2010
    Volchek



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Господа-Гуры, нужон несложный батничек обновления по сети..
     
    Сам в батниках пока -1, а сделать надо-бы побыстрее такое:
    Имеем:
     - Две рабочие станции Win XP Pro с расшаренными папками, в которых регулярно обновляются некие данные (просто добавляются новые файлы, на разных рабочих станциях разные)
     - Серверок (тоже под Win XP Pro) с папкой, в которой необходимо иметь свежие сводные данные (сравнение списка файлов со спискоми на рабочих станциях и копирование с них новых файлов в подпапки с датами и, очень желательно, указанием имени компа-источника). Архивирование не требуется.
     
    Как простейшим образом автоматизировать такую процедуру?
     
    З.Ы. Подозреваю, что-то похожее уже было, но 8 многостраничных частей не осилил, а там где читал, не нашел...

    ----------
    Сегодня - это то самое завтра, о котором мы так беспокоились вчера

    Всего записей: 1293 | Зарегистр. 05-01-2003 | Отправлено: 09:02 26-03-2010 | Исправлено: Volchek, 09:03 26-03-2010
    lorents



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

    Цитата:
    фонт у консоли переключи на юникодный, если 1251 хочешь нормально видеть. Или действительно пиши батник в 866 кодировке.  

    Можно поподробнее, как это можно написать батник в кодировке 866?
    пробовал

    Код:
    chcp 866

    но не получилось

    Всего записей: 3297 | Зарегистр. 30-12-2007 | Отправлено: 09:43 26-03-2010
    wolf0425



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

    Цитата:
    Можно поподробнее, как это можно написать батник в кодировке 866?  
    берешь редактор, который умеет сохранять текст в 866 кодировке - и пишешь.
    Я пользуюсь встроенным редактором ФАРа.
     

    Цитата:
    пробовал chcp 866 но не получилось  
    это команда переключения текущей страницы у cmd, а не кодировки батника. и 866 - она по умолчанию включена, на неё обычно переключать незачем.  
    Ну то-есть текущая кодировка должна совпадать с кодировкой в которой написан батник, чтобы русские имена нормально командами понимались, а назначенный консоли фонт должен иметь кодовую страницу для нормального отображения текста в используемой кодировке. стандартный растровый фонт - неуникодный, имеет только 866 страничку, так что переключение cmd в 1251 не понимает. А в 866 отображает всё замечательно.
    Люсида имеет и 866 и 1251 и немало всякого прочего, включая какие-то иероглифы.

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 09:56 26-03-2010 | Исправлено: wolf0425, 10:06 26-03-2010
    patrion



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    в смысле?  
    пишу precomp -slow Fallout - Meshes.bsa
    он не видит пробелы..
    Мне нужно его сначала переименовать... и сжать =)
    если можно примерчик.

    Всего записей: 69 | Зарегистр. 29-09-2009 | Отправлено: 10:48 26-03-2010 | Исправлено: patrion, 10:52 26-03-2010
    mugil_cephalus

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

    Цитата:
    Чота вспомнилось, сегодня раки маленькие. а вот вчера большие но по 5 рублей.  

     
     
     

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 11:26 26-03-2010
    AlexanderBV

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    Касательно сортировки:
    Необходимо скопировать первый файл с текущей датой, при этом сначала отобрать файлы с самой ранней датой создания (их может быть от 1-го до 4-х), а затем среди них выбрать тот у
    которого размер самый большой. Пример:
    12345678.001   26.03.2010 10:00  100 Кб
    12345678.002   26.03.2010 10:00  500 Кб
    12345678.003   26.03.2010 18:00  200 Кб
    12345678.004   26.03.2010 18:20  800 Кб
    Требуемый файл - 12345678.002
    Второй скопированый файл должен быть создан вчера, с самой поздней датой создания и самим меньшим размером. Пример:
    12345678.005   26.03.2010 09:00  100 Кб
    12345678.006   26.03.2010 09:00  500 Кб
    12345678.001   25.03.2010 10:00  100 Кб
    12345678.002   25.03.2010 10:30  500 Кб
    12345678.003   25.03.2010 22:00  200 Кб
    12345678.004   25.03.2010 22:00  800 Кб
    Требуемый файл - 12345678.003

    Всего записей: 80 | Зарегистр. 28-10-2003 | Отправлено: 11:56 26-03-2010
    yurkesha



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AlexanderBV
    Копай в направлении
    Код:
    DIR /B /O:-DS /A:-D
    нужный файл будет последним по сортировке
    и
    Код:
    DIR /B /O:D-S /A:-D
    нужный файл будет последним по сортировке.
    Отбор файлов с определенной датой создания надо делать отдельно...
     
    Добавлено:
    Ой - еще ключ один забыл
    Код:
    /T:C


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

    Всего записей: 2741 | Зарегистр. 15-12-2003 | Отправлено: 12:24 26-03-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