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

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

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

vu1tur (26-05-2009 11:39): часть 7 — http://forum.ru-board.com/topic.cgi?forum=62&topic=17154#1  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
 
Также для удаления концевых пробелов пользуйтесь скриптом от Nagual, или VBS-Скрипт-Модулем от ViSiToR.
 
Для перекодирования кирилицы 866<<>>1251 пользуйтесь онлайн сервисом Перекодировщик кириллицы

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





    http://forum.ru-board.com/topic.cgi?forum=62&topic=17154

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 23:07 04-11-2008 | Исправлено: vu1tur, 11:38 26-05-2009
    An4eus



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    01MDM
    Цитата:
    %1+%2
    это обращение, как параметру в целом или как к числу?
    Это я к тому, что если хочу передать строки


    ----------
    Век живи - век учись!

    Всего записей: 3768 | Зарегистр. 23-07-2007 | Отправлено: 11:22 20-04-2009
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    An4eus
    В данном случае это операция сложения (set /a)
    Передаем строку: q w e r t y "qwerty 123":

    Код:
     
    @echo off
     
    echo %*
    echo %1 %2 %3 %4 %5 %6 %7
    echo %~7
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 11:41 20-04-2009
    An4eus



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    01MDM
    а если нужно анализировать ключ - например передаём -i - выполняется одно действие, другой ключ - другое действие

    ----------
    Век живи - век учись!

    Всего записей: 3768 | Зарегистр. 23-07-2007 | Отправлено: 11:50 20-04-2009
    greenfox



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    у robocopy есть параметр который позволяет не выводить что именно делает команда? (в стандартном режиме весь список фалов\директорий копируемых\перемещ-х выводит на экран)

    ----------
    Три вещи вечны: смерть, налоги и потеря данных...

    Всего записей: 4139 | Зарегистр. 29-07-2003 | Отправлено: 13:01 20-04-2009
    smirnvlad

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

    Код:
     
    @echo off
    if "%~1"=="" goto :usage
    if "%~1"=="-i" goto :info
    if "%~1"=="-help" goto :help
     
    goto :eof
     
    :info
      echo Info
    goto :eof
     
    :help
      echo Help
    goto :eof
     
    :usage
      echo How to
      echo   %0 -i    - show Info
      echo   %0 -help - show Help
     

     
    см. команды shift, for, help
     
    greenfox
    может эти
    /NS :: No Size - don't log file sizes.
    /NC :: No Class - don't log file classes.
    /NFL :: No File List - don't log file names.
    /NDL :: No Directory List - don't log directory names.

    Всего записей: 417 | Зарегистр. 31-03-2009 | Отправлено: 13:14 20-04-2009
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    greenfox
    >nul не подойдет разве?

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 13:20 20-04-2009
    mouser

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый ....
    подскажите как сделать условие:
     
    если в папке равно или более 3-х файлов по маске  filesREM*, тогда ВЫПОЛНИТЬ echo wait иначе ВЫЙТИ

    Всего записей: 800 | Зарегистр. 10-11-2006 | Отправлено: 14:26 20-04-2009
    Elroir



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

    Код:
     
    @echo off
    setlocal enabledelayedexpansion
    set "count=0"
    for %%a in (filesREM*) do (
    set /a "count+=1"
    if "!count!"=="3" (echo Wait... & goto :EOF)
    )
     


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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 15:32 20-04-2009
    ZeroCrash



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    01MDM
    Спасибо!
    Всё ок.
     
    Теперь у меня к тебе есть ещё один вопрос, есл можно)
     
    Можно ли сделать вот такое:
     
    Нужно чтобы при запуске батника открывалась нужная прога, в этой проге есть поле для ввода текста и там уже содержится определённый текст. Так вот можно ли сделать так чтобы батник находил поле, в которое введён этот текст и заменял этот текст на случайную строчку из списка в текстовом файле?
     
    Знаю что прошу многое (да и думаю задача не совсем для батника), но тем не иенее с нетерпением жду ответа.
    Если так сделать в батнике нельзя, то подскажи пожалуйста где и как)
     
    Заранее ОЧЕНЬ благодарен!

    Всего записей: 43 | Зарегистр. 15-04-2009 | Отправлено: 23:07 20-04-2009 | Исправлено: ZeroCrash, 23:53 20-04-2009
    mouser

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    СПАСИБО ... но там нужен GEQ
     
    @echo off
    setlocal enabledelayedexpansion
    set "count=0"
    for %%a in (filesREM*) do (
    set /a "count+=1"
    if "!count!" GEQ "3" (echo Wait... & goto :EOF)
    )
     

    Всего записей: 800 | Зарегистр. 10-11-2006 | Отправлено: 09:56 21-04-2009
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ZeroCrash
    К сожалению командные файлы не могут сделать такое. Ищи на форуме AutoIT, мне кажется он тебе поможет

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 11:56 21-04-2009
    greenfox



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

    ----------
    Три вещи вечны: смерть, налоги и потеря данных...





    в ПМ!

    Всего записей: 4139 | Зарегистр. 29-07-2003 | Отправлено: 11:59 21-04-2009 | Исправлено: vu1tur, 13:53 21-04-2009
    Elroir



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

    Цитата:
    но там нужен GEQ  

    А смысл?
    Если for дошел до трех, то, в любом случае, условие "больше или равно трем" выполняется.
    А если учесть, что при достижении трех, происходит выход из цикла, то условие "больше трех" вообще недостижимо.

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 13:03 21-04-2009
    ZeroCrash



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    01MDM
     
    Спасибо!
     
    Тогда у меня другой вопрос:
    Как придать придать случайное значение определённому параметру реестра случайным значением из списка в текстовом файле?
    Такое можно?

    Всего записей: 43 | Зарегистр. 15-04-2009 | Отправлено: 15:53 21-04-2009
    01MDM



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

    Цитата:
    Такое можно?

    При условии что в файле values.txt записаны по одному варианту значений на каждую строчку. Например:

    Код:
     
    1dfghy
    123 ff rr
    222 dfrggb
    svfrTR 659
    sss gtre 4563
    cdvvbg IUnvgf8 88
    qweerrvvv
    334 y67gfde4
    и т.д и т.п
     

    Батник:

    Код:
     
    @echo off
    setlocal
     
    :: Путь к ключу реестра
    set regpath=hkcu\environment
     
    for /f "tokens=*" %%i in (values.txt) do call:set "%%i"
    for /f "tokens=3* delims=_=" %%i in ('set value_') do set "randomValue=%%i %%j"
     
    :: Ниже "test" - название параметра реестра
    reg add "%regpath%" /v "test" /t reg_sz /d "%randomValue%" /f
     
    goto:eof
     
    :set
    set "value_%random%=%~1"
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 16:28 21-04-2009
    ZeroCrash



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    01MDM
     
    Спасибо!
     
    Буду пробовать)
     
    Добавлено:
    А как сделать чтобы такое же значение, которое добавляется в параметр реестра, добавлялось ещё в один или несколько параметров в разных ветвях реестра? (имена параметров одинаковые)
     
    И ещё, как сделать чтобы згачение присваивалось случайно по такой маске:
     
    xxxxx-QWE-xxxxxxx-xxxxx
     
    x - это случайные цифры
    QWE - чтобы всегда были эти 3 буквы без изменения
     
    Заранее ОЧЕНЬ сильно благодарен))))

    Всего записей: 43 | Зарегистр. 15-04-2009 | Отправлено: 16:38 21-04-2009 | Исправлено: ZeroCrash, 16:55 21-04-2009
    01MDM



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

    Код:
     
    @echo off
    setlocal enabledelayedexpansion
     
    :: Генерируем ключ
     
    for %%i in (1,2,3) do (  
        for /f %%j in ("!random!!random!!random!") do set "value_%%i=%%j"
    )
     
    for /f "tokens=2 delims=_=" %%i in ('set value_') do (
        if %%i==1 set "value_1=%value_1:~-5%-QWE"
        if %%i==2 set "value_2=%value_2:~-7%"
        if %%i==3 set "value_3=%value_3:~-5%"
    )
     
    set "key=%value_1%-%value_2%-%value_3%"
     
    :: Записываем значения в реестр
     
    :: Здесь ветки, в которые будем записывать ключ
     
    set "regpath_1=hkcu\environment\qwerty"
    set "regpath_2=hklm\software\asdfgh"
    set "regpath_3=hkcr\.test\zxcvbn"
     
    :: "Your Param" - название параметра
    for /f "tokens=2 delims==" %%i in ('set regpath_') do (
        reg add "%%i" /v "Your Param" /t reg_sz /d %key% /f
    )
     


    Цитата:
    имена параметров одинаковые

    На всякий случай - можно сделать и разные

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 17:33 21-04-2009
    ZeroCrash



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Ещё раз спасибо!
     
    Добавлено:
    А вот такой батник будет правельным:
     

    Код:
    @echo off
    setlocal
     
    set "regpath_1=HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters
    set "regpath_2=HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
     
    for /f "tokens=*" %%i in (host.txt) do call:set "%%i"
    for /f "tokens=3* delims=_=" %%i in ('set value_') do set "randomValue=%%i %%j"
     
    for /f "tokens=2 delims==" %%i in ('set regpath_') do (
    reg add "%regpath%" /v "Hostname" /t reg_sz /d "%randomValue%" /f
    )  
     
    goto:eof
     
    :set
    set "value_%random%=%~1"  

     
    Эти я хочу записать одно случайно взятое значение из текстового файла вставить в качестве значения в два ключа реестра.

    Всего записей: 43 | Зарегистр. 15-04-2009 | Отправлено: 17:36 21-04-2009
    01MDM



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

    Код:
     
    @echo off
    setlocal
     
    set "regpath_1=HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters
    set "regpath_2=HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
     
    for /f "tokens=*" %%i in (host.txt) do call:set "%%i"
    for /f "tokens=3 delims=_=" %%i in ('set value_') do set "randomValue=%%i"
     
    for /f "tokens=2 delims==" %%i in ('set regpath_') do (
    reg add "%%i" /v "Hostname" /t reg_sz /d "%randomValue%" /f
    )  
     
    goto:eof
     
    :set
    set "value_%random%=%~1"
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 18:08 21-04-2009
    ZeroCrash



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

    Всего записей: 43 | Зарегистр. 15-04-2009 | Отправлено: 18:11 21-04-2009
       

    Страницы: 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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 6
    vu1tur (26-05-2009 11:39): часть 7 — http://forum.ru-board.com/topic.cgi?forum=62&topic=17154#1


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru