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

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

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

vu1tur (09-01-2011 11:53): лимит страниц, продолжение — http://forum.ru-board.com/topic.cgi?forum=62&topic=22143  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 17:45 04-09-2010 | Исправлено: Accessor, 18:04 28-09-2010
    smirnvlad

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
    а почему бы не так
    set a=%1
    if not "%2"=="" (
    set b=%2
    )
    или так
    if not "%2"=="" set b=%2
    if not "%1"=="" set a=%1

    Всего записей: 417 | Зарегистр. 31-03-2009 | Отправлено: 12:31 10-11-2010
    king_stiven

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

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 13:52 10-11-2010
    stepanandryuhin

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте.
     
    Возможно ли с помощью батника изменить дату установки программы в Windows XP?

    Всего записей: 36 | Зарегистр. 11-10-2010 | Отправлено: 14:43 10-11-2010
    king_stiven

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

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 15:16 10-11-2010
    xtradex

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте!
     
    А можно ли средствами комстроки сменить часовой пояс в WinXP?
    Немного не в тему, наверное, но PowerShell тоже подойдет...
     
    Гугление выдает только запуск апплета с часами 8(

    Всего записей: 41 | Зарегистр. 07-12-2005 | Отправлено: 15:52 10-11-2010 | Исправлено: xtradex, 15:54 10-11-2010
    smirnvlad

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    xtradex
    гугл говорит
    control.exe timedate.cpl,,/Z Russian Standard Time
    где после /Z указывается имя раздела из HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones

    Всего записей: 417 | Зарегистр. 31-03-2009 | Отправлено: 17:24 10-11-2010
    Accessor



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Народ, подскажите как сделать, плиз. У меня есть строка. Мне надо определённый символ в этой строке заменить на другой символ. Таких символов в строке может быть множество. Нутром чую, что эту строку надо подать на вход в цикл for /f, но не понимаю, что надо указать в качестве tokens?

    Всего записей: 2863 | Зарегистр. 31-10-2003 | Отправлено: 18:41 10-11-2010
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Accessor
    Sed ?
    или используй этот символ в качестве delims

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 18:57 10-11-2010 | Исправлено: king_stiven, 18:58 10-11-2010
    smirnvlad

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Accessor
    если строка в переменной
    поменять все 1 на 2 в переменной me так
    set me=%me:1=2%

    Всего записей: 417 | Зарегистр. 31-03-2009 | Отправлено: 19:02 10-11-2010
    Accessor



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
    "sed" не является внутренней или внешней

    Цитата:
    или используй этот символ в качестве delims
    Это я понимаю, что поисковый символ надо ставить в delims. А как мне узнать количество токенов, которые надо вычленить в моей строке - вот в чём был мой вопрос. Если токены не указывать вообще, то for дает в тело цикла только первый токен, а мне нужны все токены.
     
    smirnvlad

    Цитата:
    поменять все 1 на 2 в переменной me так
    set me=%me:1=2%

    Спасибо, всё получилось. Отправляюсь курить букварь по команде set

    Всего записей: 2863 | Зарегистр. 31-10-2003 | Отправлено: 11:22 11-11-2010
    res2001



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

    Цитата:
    А как мне узнать количество токенов, которые надо вычленить в моей строке - вот в чём был мой вопрос.

    Если сделать рекурсивную процедуру, то можно решить проблему, как раз недавно делал нечто подобное, правда для других целей (преобразовывал сжатый xml в текстовый файл, где каждая строка это либо тег xml либо данные xml). Вот пример:
     

    Код:
    for /f "usebackq tokens=1,* delims=<>" %%b in ("file.xml") do (
        set "v1=%%b"
        set "v2=%%c"
        call:parser
    )
     
    :parser
    echo.%v1%
    for /f "tokens=1,* delims=<>" %%d in ("%v2%") do (
        set "v1=%%d"
        set "v2=%%e"
        call:parser
        exit /b
    )
     

    Код не рабочий, выдернут из работающего батника, чтоб обозначить идею.

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 11:38 11-11-2010 | Исправлено: res2001, 11:38 11-11-2010
    01MDM



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

    Цитата:
    А как мне узнать количество токенов, которые надо вычленить в моей строке - вот в чём был мой вопрос.


    Код:
     
    @echo off
    setlocal
     
    set string=qwertyhakdfdweqsdgddakj
     
    :: Если один разделитель, например "a"
    for %%i in ("%string:a=","%") do set /a tokens+=1
     

     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 11:48 11-11-2010
    Accessor



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    Поясни, плиз, выражение в скобках. Да и тело цикла, тоже, непонятно...

    Всего записей: 2863 | Зарегистр. 31-10-2003 | Отправлено: 12:11 11-11-2010
    01MDM



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

    Цитата:
    Поясни, плиз, выражение в скобках.

    Там не выражение, а просто переменная %string% приведенная к виду:

    Код:
     
    "qwertyh","kdfdweqsdgdd","kj"  
     

    Поскольку простой цикл for выводит последовательно все токены, а запятая служит разделителем, то их можно сосчитать:

    Код:
     
    for %%i in ("qwertyh","kdfdweqsdgdd","kj") do set /a tokens+=1
     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 12:27 11-11-2010
    Accessor



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

    Цитата:
    Там не выражение, а просто переменная %string% приведенная к виду
     "qwertyh","kdfdweqsdgdd","kj"  

     
    Ок, а что именно тогда приводит её к этому виду - двоеточие, или равно? Символ "а", как я понял, это и есть разделить?

    Всего записей: 2863 | Зарегистр. 31-10-2003 | Отправлено: 12:34 11-11-2010
    res2001



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

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 12:34 11-11-2010
    Accessor



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    и для чего нужно ,"%" там же, в скобках?

    Всего записей: 2863 | Зарегистр. 31-10-2003 | Отправлено: 12:35 11-11-2010
    01MDM



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

    Код:
     
    set "string=12345a67890"
    echo "%string:a=","%"
     

     
    set /?
    %var:<string1>=<string2>%
     
    Это модификация переменной.

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 12:53 11-11-2010 | Исправлено: 01MDM, 12:56 11-11-2010
    slech



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    сегодня узнал о приятной програмке, правдо в Windows XP её нету, но в 2k3 есть.
    forfiles

    Всего записей: 4893 | Зарегистр. 10-11-2004 | Отправлено: 15:02 11-11-2010 | Исправлено: slech, 15:03 11-11-2010
    Accessor



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    Цитата:
    %var:<string1>=<string2>%  
    Это модификация переменной.
    С этим разобрался, прочитав help, а вот с ,"%"  по-прежнему непонятно.

    Всего записей: 2863 | Зарегистр. 31-10-2003 | Отправлено: 15:26 11-11-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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 9
    vu1tur (09-01-2011 11:53): лимит страниц, продолжение — http://forum.ru-board.com/topic.cgi?forum=62&topic=22143


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru