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

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

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

vu1tur (11-09-2007 15:22): продолжаем в теме Задачи на bat-файлах 4  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 11:54 27-04-2007 | Исправлено: Elroir, 03:59 10-09-2007
    paveltr



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Порылся в инете, как включить аудит использования спящего режима так и не нашёл Никто не в курсе как это сделать?

    Всего записей: 18 | Зарегистр. 01-04-2006 | Отправлено: 02:44 24-08-2007
    dardreams



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Возможно ли запустить батник до закрузки экрана ввода пароля XP?
    Я хочу сделать чтобы пароль менялся при каждой загрузке.

    Всего записей: 100 | Зарегистр. 29-05-2007 | Отправлено: 08:24 24-08-2007
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    dardreams
    http://support.microsoft.com/kb/243486/ru

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 10:14 24-08-2007
    Rotorina



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как через командную строку в текстовом документе найти последовательность символов, заменить её на другую и тут же сохранить этот файлик (желательно с другим именем)?

    Всего записей: 109 | Зарегистр. 03-08-2007 | Отправлено: 10:39 24-08-2007
    igor_andreev

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Rotorina
    В шапке, в Полезных утилитах:
    gsar - General Search and Replace, поиск и замена текста в файле  
     

    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 10:51 24-08-2007
    dardreams



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

    Всего записей: 100 | Зарегистр. 29-05-2007 | Отправлено: 11:08 24-08-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Rotorina
    Я же тебе ответил в топике Командная строка, батники, сценарии (bat, cmd) (Программы).

    ----------
    "В интернете есть все, но не всегда"

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 11:12 24-08-2007
    Rotorina



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

    Всего записей: 109 | Зарегистр. 03-08-2007 | Отправлено: 11:14 24-08-2007 | Исправлено: Rotorina, 11:15 24-08-2007
    KapralBel



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

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 11:30 24-08-2007 | Исправлено: KapralBel, 11:31 24-08-2007
    slayer120



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть пара вопросов:
    1. Как в этой строчке будет работать цикл?
     
     for /f "tokens=3,4 delims= " %%a in ('echo list volume ^| diskpart ^| findstr /l /i "raid"') do  
     
    если том с такой меткой не найден то что в do вообще не выполняется.
     Как проанализировать что ничего не найдено по коду возврата чтоли?
     
    2.  Эта строчка используется для проверки подключения внешнего HDD с usb
    интерфейсом:  
     
     for /f "tokens=3 delims= " %%a in ('echo list volume ^| diskpart ^| findstr /l "Removeable"')  
     
     Но увы для такого hdd он не показывается как сменный, а как обычный диск.
     Больше никак нельзя определить что он usb ный?
     
    3. Как присвоить переменной значение нескольких переменных из цикла for
     
      set yte="%%f""%%l""%%q" ? После выхода из for yte пустая  Что я делаю не так?

    Всего записей: 303 | Зарегистр. 24-01-2007 | Отправлено: 11:59 24-08-2007 | Исправлено: slayer120, 12:03 24-08-2007
    01MDM



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

    Цитата:
    set yte="%%f""%%l""%%q" ? После выхода из for yte пустая  Что я делаю не так?

     
    Если в цикле переменная %%a, то

    Код:
     
    set yte="%%a%%b%%c"
     

     
     
    Добавлено:
    Ошибся:

    Код:
    set "yte=%%a%%b%%c"  

     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 12:32 24-08-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    Небольшое добавление - все это сработает, если определены токены для дополнительный букв.
     
    slayer120

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

    В теле for-a определи переменную, например, "set flag=true", а после выхода из for-a проветь существует-ли переменная - "if defined flag ( .... )"
     
     

    ----------
    "В интернете есть все, но не всегда"

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 12:42 24-08-2007
    01MDM



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

    Цитата:
    Больше никак нельзя определить что он usb ный?

     
    Попробуй, что покажет

    Код:
     
    @Echo Off
     
    for /f "skip=1 tokens=1,2 delims= " %%i in ('wmic diskdrive get deviceid^,interfacetype') do (
        echo %%i %%j
        )
     
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 13:53 24-08-2007
    slayer120



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

    Цитата:
    Но увы для такого hdd он не показывается как сменный, а как обычный диск.  
     Больше никак нельзя определить что он usb ный?  

      Сам себе отвечу  . На 75 стр мне давали ссылку и там же я нашел замечательную  утилитку спаcибо Nikzzzz.
      Строчка для поиска буквы смонтированного usb будет выглядеть:
     
     for /f "tokens=2* delims==" %%a in ('ListUsbDrives.exe^|findstr /l /i "mountpoint"') do (  
     echo %%a  
     
    ListUsbDrives.exe утилитка из набора работает с внешним usb, а не только с флешками.
     
    Добавлено:
      Вопрос по dir. Надо получить список файлов внутри нескольких папок.  
    отсортированный по времени записи например.
    винт- arch  
                     папка1
                     папка2
     
    и тд  
      По команде  
    dir h:\arch /A:-D /B /S /O:d /T:W  
     
    файлы сортируются только внутри своих папок, т.е первым пойдет последний по времени записи файл из папки 1. А мне нужно, чтобы первым был самый ранний созданный файл.
    Придется делать дир в файл результаты сортировать по параметрам и т.п.
       С помощью только дир можно решить эту задачу?

    Всего записей: 303 | Зарегистр. 24-01-2007 | Отправлено: 13:56 24-08-2007
    Tipulatoid



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    slayer120
    Если я правильно тебя понял, то так:

    Код:
    dir h:\arch /A:-D /B /S /O:-d /T:c

    А вообще почитай dir /? - команда может делать какой угодно вывод, главное не забывать, что знак - обращает условие на противоположное.

    Всего записей: 349 | Зарегистр. 22-12-2006 | Отправлено: 05:06 25-08-2007
    slayer120



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Tipulatoid
     Никак он не выводит как мне надо - мне надо список всех файлов, упорядоченных по дате создания - выдается список упорядоченный, но  
    сначала все файлы 0 уровня затем файлы 1-го каталога 1-го уровня вложенности
    2-го и т.д.
    придется выводить в файл и сортировать

    Всего записей: 303 | Зарегистр. 24-01-2007 | Отправлено: 08:36 25-08-2007
    Tipulatoid



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    slayer120
    Т.е. я правильно тебя понял, что тебе нужны в выводе только имена файлов, без полного пути к ним? Если так, то же можно пошаманить чуток. Сейчас подумаю.
    Добавлено
    Не придумал Наверное и вправду надо сортировать список. Получить список в виде, удобном для сортировки можно так:

    Код:
    @echo off
    for /r h:\arch %%a in (*) do (
       echo %%~ftzaa>>list.txt
    )

    Всего записей: 349 | Зарегистр. 22-12-2006 | Отправлено: 10:00 25-08-2007 | Исправлено: Tipulatoid, 11:16 25-08-2007
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    slayer120
     
    Не проверял на больших списках, достаточно медленно. На маленьких папках вроде работает. Запускай из корня папки (d:\arch)
     

    Код:
     
    @echo off
    for /r %%i in (*) do (
        set "file=%%i"
        call:list
        )
    sort list.tmp /o list1.tmp
    for /f "tokens=1,2,* delims= " %%i in ('type list1.tmp') do (
        echo %%j %%k >>list.txt
        )
    del list*.tmp
    type list.txt
    goto:eof
     
    :list
    for /f "skip=4 tokens=1,4,* delims= " %%i in ('dir /a:-d /t:c "%file%" ^| find /v "байт"') do (
        set "_date=%%i"  
        set "fname=%%j %%k"
        call:sub
        echo %sortindex% %fname% >>list.tmp  
        )
    goto:eof
     
    :sub
    for /f "tokens=1-3 delims=." %%i in ('echo %date%') do (
        set "cury=%%k"
        )
    for /f "tokens=1-3 delims=." %%i in ('echo %_date%') do (
        set "cr_y=%%k"
        set "cr_m=%%j"
        set "cr_d=%%i"
        )
     
    if %cr_m:~0,1% equ 0 set "cr_m=%cr_m:~1,1%"
    if %cr_d:~0,1% equ 0 set "cr_d=%cr_d:~1,1%"
     
    set /a "resy=%cury%-%cr_y%"
    set /a "resm=12-%cr_m%"
    set /a "resd=31-%cr_d%"
     
    if %resm% leq 9 set "resm=0%resm%"
    if %resd% leq 9 set "resd=0%resd%"
     
    set "sortindex=%resy%%resm%%resd%"
    goto:eof
     
     
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 18:14 25-08-2007
    ali1977



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    настроил в назначенных заданиях запуск батника
    но почему то он в положенное время не запускается-вручную запускаю все работает
    может ли это быть из-за того что у меня комп на работе  без пароля? (дома комп с паролем, настроил - все срабатывает )
    система windows xp sp2

    Всего записей: 606 | Зарегистр. 15-07-2006 | Отправлено: 22:06 25-08-2007
    vu1tur



    Moderator-Saaber
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    ali1977
    да, для шедулера нужен установленный не пустой пароль.

    ----------
    I am free of all prejudice. I hate everyone equally.

    Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 22:16 25-08-2007
       

    Страницы: 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-файлах 3
    vu1tur (11-09-2007 15:22): продолжаем в теме Задачи на bat-файлах 4


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru