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

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

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    To 01MDM спасибочки!

    Всего записей: 32 | Зарегистр. 13-09-2006 | Отправлено: 10:13 06-05-2008
    king_stiven

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

    Код:
    @echo off  
    cd /d D:\2
    for %%c in (*.*) do (
        set "file=%%c"
        call :rty
    )
    goto :eof
    :rty
    set "folder=%file:~0,4%"
    if not exist "%folder%\" md "%folder%"
    MOVE "%file%" "%folder%"

    Всего записей: 2167 | Зарегистр. 17-07-2006 | Отправлено: 10:20 06-05-2008
    Joolz

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    И еще вопросец...
    Как можно стартовать службу (service), если у нее тип запуска - отключено.
    Я пробую через WMIC, но не соображу какой там синтаксис.
     
    Пробую юзать wmic service where NAME=Messenger call ChangeStartMode startmode=Manual, но дает ошибку startmode - не входной параметр.
     
    Надо поменят StartMode=Disabled на Auto
    Name=Messenger
    DisplayName="Служба сообщений"

    Всего записей: 100 | Зарегистр. 24-01-2008 | Отправлено: 12:00 06-05-2008 | Исправлено: Joolz, 12:12 06-05-2008
    SHEVRSV



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как создать генератор символов и записи его в txt замещая определенные символы.
     
    Для чего мне это надо:
     
     У меня есть наклейка от Win XP OEM, кто то оторвал три символа из кода,  можно ли их как то восстановить или сгенирировать три недостающих символа?
     
    Как можно сделать:
     
    у меня есть
    1. ключик типа: ххххх-ххххх-ххххх-???ххх-ххххх
    где ??? не известные три символа
    2. программа для проверки ключа подходит ли он к этой версии.
    Для проверки ключа он вводится вручную, либо, из txt файла, но в указанном выше формате.
     
    Нужно как то придумать, что бы по маске в txt файл записывались ключи вот так:
     
    ххххх-ххххх-ххххх-FD5ххх-ххххх
    ххххх-ххххх-ххххх-FD6ххх-ххххх
    ххххх-ххххх-ххххх-CVBххх-ххххх
    ххххх-ххххх-ххххх-RT5ххх-ххххх
     
    и вместо ??? не все цифры и буквы алфавита,  а например только комбинация из  DFCVBRT56
     
    Из реестра вытащить не получится, потому что там ключ ОЕМ.

    Всего записей: 240 | Зарегистр. 02-05-2008 | Отправлено: 12:10 06-05-2008
    bmax

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Все вроде бы работает, только вот еще спрошу:  
     
    for /f "skip=КАК ЗДЕСЬ РОПУСТИТЬ КОЛИЧЕСТВО СТРОК РАВНОЕ ЗНАЧЕНИЮ В ПЕРВОЙ СТРОКЕ ФАЙЛА 1.TXT???  tokens=1,3* delims=:=" %%i in ('findstr /n "FileName=.b.*" d:\Teleport\files\acp.rec') do (
    set "line=%%i" && call:copy)

    Всего записей: 32 | Зарегистр. 13-09-2006 | Отправлено: 12:23 06-05-2008
    01MDM



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

    Код:
     
    sc config Messenger start= auto
    sc start Messenger  
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 12:29 06-05-2008 | Исправлено: 01MDM, 12:39 06-05-2008
    Joolz

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    О! Какая интересная утилитка. Спасибо большое.
     
    Решил задачку и с помощью WMIC. Если кому интересно, вот код:

    Код:
     
    wmic service where (NAME="Messenger") call ChangeStartMode "AUTOMATIC"
    wmic service where (NAME="Messenger") call StartService
     

     
    Замечу, что не смотря на то, что запрос параметров службы выводит значение StartMode=Auto, для присвоения такого значения нужно набирать именно AUTOMATIC.

    Всего записей: 100 | Зарегистр. 24-01-2008 | Отправлено: 12:36 06-05-2008 | Исправлено: Joolz, 16:24 19-05-2008
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Joolz
     
    Я опечатался, исправил
     
     
    Добавлено:
    bmax
     
    Если в первой строке файла только число, то
     

    Код:
     
    @echo off
    set /p skip=<1.txt
    for /f "skip=%skip%........
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 12:40 06-05-2008
    Dantis

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Можноли по средствам  bat  файлов запретить доспут на определенную страничку в инете?   (через фаер уже не как =( моя домашняя обизаня научилась его закрывать)

    Всего записей: 26 | Зарегистр. 25-03-2008 | Отправлено: 14:17 06-05-2008
    king_stiven

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

    Код:
    @echo off
    for %%c in (D F C V B R T 5 6) do (
        for %%d in (D F C V B R T 5 6) do (
            for %%e in (D F C V B R T 5 6) do echo ххххх-ххххх-ххххх-%%c%%d%%eххх-ххххх >> 1.txt
        )
    )

    Всего записей: 2167 | Зарегистр. 17-07-2006 | Отправлено: 14:57 06-05-2008 | Исправлено: king_stiven, 15:01 06-05-2008
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Dantis
    Не ругайся с домашней
    Отредактируй Windows\system32\drivers\etc\hosts
     
    Что-нибудь типа:
     
    127.0.0.1 liveinternet.ru
     
    Не всегда работает, по этому для надежности еще допиши туда-же с www. и http://...

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

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

    Цитата:
     
    :: Находим строки "FileName=...." и их номера
    set /p skip=<last_pos.txt
    for /f "skip=%skip% tokens=1,3* delims=:=" %%i in ('findstr /n "FileName=.b.*" d:\2\all.txt') do (
    set "line=%%i" && call:copy)
     

    Такое впечатление что skip в данном случае не строки пропускает а найденные файлы, потому как без него (без skipа) все работает а с ним нет. Что может быть?

    Всего записей: 32 | Зарегистр. 13-09-2006 | Отправлено: 15:56 06-05-2008
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    bmax
    Попробуй skip=%skip% вообще убери, а в кавычках more + добавь
    .... ('more +%skip% d:\2\all.txt ^| findstr /n "FileName=.b.*"')...

    Всего записей: 1667 | Зарегистр. 08-12-2004 | Отправлено: 16:06 06-05-2008
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    bmax
    А что записано в last_pos.txt. Номер последней строки all.txt при предыдущем выполнении?
    Наверное в первый раз надо запустить без skip, что бы получить все строки и конец файла. Или написать условие if exist  last_pos.txt
     
    Т.е этот батник должен применяться и в следующий раз? Сейчас нет возможности проверить, вечером отпишусь.
     
     
    Добавлено:
    igor_andreev
     
    Да, пожалуй это будет нормально
     
    Добавлено:
    bmax
     
    Попробуй так:

    Код:
     
    :: Находим строки "FileName=...." и их номера
    set skip=0
    if exist last_pos.txt (     
        set /p skip=<last_pos.txt
    )
    for /f "tokens=1,3* delims=:=" %%i in ('more +%skip%  d:\2\all.txt ^| findstr /n "FileName=.b.*"') do ....
     
     


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

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Привет всем! Подскажите плс, стоит такая задача. Есть каталог, в нем каждый день создаются файлы. Мне в начале наступившего дня, скажем в 00:05 необходимо создать папку с именем равным дате прошедшего дня, и переместить в нее все файлы, у которых дата создания соответствует дате прошедшего дня.  
    Заранее спасибо!

    Всего записей: 613 | Зарегистр. 04-11-2005 | Отправлено: 17:12 06-05-2008 | Исправлено: ruan, 17:24 06-05-2008
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Требуется имитировать нажатие сочетания клавиш ctrl+shift+p, чтобы потом в цикле с паузами можно было запустить, или утилиту какую лёгкую.

    Всего записей: 2167 | Зарегистр. 17-07-2006 | Отправлено: 17:38 06-05-2008
    bmax

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

    Цитата:
     
    for /f "tokens=1,3* delims=:=" %%i in ('more +%skip%  d:\2\all.txt ^| findstr /n "FileName=.b.* FileName=.а.*"') do ...
     

    Спасибо за ответы, в очередной раз выручаете

    Всего записей: 32 | Зарегистр. 13-09-2006 | Отправлено: 17:57 06-05-2008
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
    последняя версия nircmdc (nircmdc sendkey)
     
    bmax
    И не забудь при обработке увеличить line на skip, что бы номера строк соответствовали действительности

    Код:
     
     :: Находим строки "FileName=...." и их номера
    set skip=0
    if exist last_pos.txt set /p skip=<last_pos.txt
    for /f "tokens=1,3* delims=:=" %%i in ('more +%skip  d:\2\all.txt ^| findstr /n "FileName=.b.*"') do (
         set /a line=%%i+skip && call:copy
    )  
     

     

    Цитата:
    и еще будет ли корректно отрабатываться поиск строки по одному из двух значений?

    Наверное нет, надо составлять другое условие

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 18:16 06-05-2008 | Исправлено: 01MDM, 18:20 06-05-2008
    SHEVRSV



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

    Всего записей: 240 | Зарегистр. 02-05-2008 | Отправлено: 19:34 06-05-2008
    DazZzle

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как поменять дату изменения(или создания) файла через бат файл.

    Всего записей: 2 | Зарегистр. 07-05-2008 | Отправлено: 01:06 07-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.Board
    © Ru.Board 2000-2020

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru