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

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



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    metraton
     
    Самое простое, это перечислить все буквы:

    Код:
     
    @echo off
    for %%i in (q w e r t y u i o p s d f g h j k l z x c v n m) do dir /b /s /a "%%i:\file.ext" 2>nul
     


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

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Приветствую всех уважаемых форумчан этих замечательных веток, которые с некоторых пор очень мне помогают. Одно плохо: веток много, и я вконец запутался в поиске нужного мне... Помогите, пожалуйста, решить задачу:
    Есть батник, в котором нужно изменить путь к исполняемому файлу в соответствии с веткой реестра, вернее, с одним ее ключом. Ключ является полноценным путем к папке, не включающим лишних символов, но у меня не получается это использовать - знаний слишком мало... (Делаю инсталлятор программы-дополнения, которая должна после установки изменить пусковой батник основной программы таким образом, чтобы она оставалась рабочей вне зависимости выбора пути установки).
    Если кратко:
    Нужно заменить строки в батнике, скажем:
    ....
    start /Wait С:\Myprogs\Softina\Boo.exe
    ....
    взяв путь в ключе:
    [HKEY_LOCAL_MACHINE\SOFTWARE\Krupnosoft\Sword]
    "InstallPath"="С:\Mybugs\Poltina\Boo.exe\\"
    Заранее прошу прощения за возможные ошибки и неточности.

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



    Moderator-Saaber
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    meopemuk

    Код:
     
    for /F "tokens=3" %%a in ('reg query HKEY_LOCAL_MACHINE\SOFTWARE\Krupnosoft\Sword /v InstallPath ^| findstr InstallPath') do set installpath=%%a
    start /Wait %installpath%
     


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

    Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 01:49 19-04-2009 | Исправлено: vu1tur, 01:50 19-04-2009
    Maza_Faka



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

    Цитата:
    похоже, значение ping -n 2 минимальное

    Да вроде бы задержка в 1 секунду, тоже не сильно грузит систему

    Код:
     
    @echo off
    color 0e
     
    :st
    echo Help!
    ping -n 1 localhost>nul
    cls
    ping -n 1 localhost>nul
    goto :st
     

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 09:42 19-04-2009
    alexagf



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    В общем, как я уже говорил, следующий код работает:

    Код:
    if %PROCESSOR_ARCHITECTURE% == AMD64 (  
    START /WAIT setup1.exe
    ) else (  
    START /WAIT setup2.exe  
    )

    Однако, он работает только при запуске командного файла из папки.
    Если я упаковываю ее в SFX-архив с запуском того-же командного файла,
    то на любой ОС срабатывает секция х86.
    Возможно, к топику это не имеет отношения, но я уже и не знаю где копать.
    В чем причина?
     
    greenfox

    Цитата:
    IF ((PROCESSOR_ARCHITECTURE == AMD64) OR  
           (PROCESSOR_ARCHITEW6432 == AMD64)) THEN  
           // 64-х битная ОС  
        ELSE  
           // 32-х битная ОС  
        END IF

    А это вообще не работает. Что-то с синтаксисом, а я в нем не силен...
     
    Вот кинул тестовый SFX 100kb
    Посмотрите, плиз, у кого 64-битная система. Мож какие мысли будут...

    Всего записей: 1438 | Зарегистр. 23-09-2001 | Отправлено: 11:39 19-04-2009 | Исправлено: alexagf, 12:10 19-04-2009
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    alexagf
    2 код на языке vbs-script

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 12:40 19-04-2009
    alexagf



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Nagual
    Да Бог с ним, с vbs-script...
    Меня больше волнует несрабатывание из архива.

    Всего записей: 1438 | Зарегистр. 23-09-2001 | Отправлено: 12:53 19-04-2009
    vu1tur



    Moderator-Saaber
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    alexagf
    выполни из архива команду set >log.txt
    и посмотри что там вообще в окружении, когда скрипт пускается из архива

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

    Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 13:16 19-04-2009
    smirnvlad

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    alexagf
     
    Из архива не работает, потому что архиватор работает в 32 битном режиме и %PROCESSOR_ARCHITECTURE% становится x86, в т.ч. и для запускаемых процессов, а проверки на %PROCESSOR_ARCHITEW6432% == AMD64 нету
     
    Попробуй такое
     

    Код:
     
    @echo off
     
    set isAMD64=
    IF _%PROCESSOR_ARCHITECTURE%==_AMD64 (
      @echo 1
      set isAMD64=true
    )
    IF _%PROCESSOR_ARCHITEW6432%==_AMD64 (
      @echo 2
      set isAMD64=true
    )
    if _%isAMD64%==_true (
      @echo amd64
    ) else (
      @echo x86
    )
    pause
     


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



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    vu1tur
    При прямом запуске:

    Код:
    PROCESSOR_ARCHITECTURE=AMD64
    PROCESSOR_IDENTIFIER=EM64T Family 6 Model 26 Stepping 4, GenuineIntel
    PROCESSOR_LEVEL=6
    PROCESSOR_REVISION=1a04

    При запуске из архива:

    Код:
    PROCESSOR_ARCHITECTURE=x86
    PROCESSOR_ARCHITEW6432=AMD64
    PROCESSOR_IDENTIFIER=EM64T Family 6 Model 26 Stepping 4, GenuineIntel
    PROCESSOR_LEVEL=6
    PROCESSOR_REVISION=1a04

    Но почему? Ведь запускается один и тот же файл.
    И как это обойти?
     
    Добавлено:
    smirnvlad
    Вах, как все запутано!
    Вроде, работает. Спасибо!

    Всего записей: 1438 | Зарегистр. 23-09-2001 | Отправлено: 13:42 19-04-2009
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    есть текстовый файл message.log
    требуется рассортировать его строки на два файла - содержащие подстроку "string" (реально - оканчивающиеся на нее) и остальные.
     
    вопрос: известен ли способ сделать это в один проход (одной командой) или ничего лучше двух последовательных вызовов find.exe не придумано?
     
    сортировка построчным чтением через for in (message.log) непригодна - символы <> в логе заведомо заведомо есть.

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 17:31 19-04-2009 | Исправлено: wolf0425, 17:38 19-04-2009
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    Код:
    @echo off
    chcp 1251>nul
    findstr
    /e string test.txt>new.txt
    findstr /e /v string test.txt>new1.txt
    хотя наверняка и sed можно прикрутить

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 17:55 19-04-2009
    mudag100500

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Доброго времени суток! Прошу помощи в решении следующей задачи:
    Нужно определить IP адрес машины, на которой запущен батник[локальный айпи, тот что в свойствах TCP/IP, на случай нескольких сетевых подключений желательно продумать вариант определить активное и/или по которому идёт обмен пакетами в общем случае или в случае пинга определённого узла], и, в зависимости от значения, вывести вообщение на экран или изменить адрес, шлюз, днс и тоже сообщить об этом echo'м
    Реально ли реализовать bat-ником ? Если да, то как?

    Всего записей: 61 | Зарегистр. 04-10-2008 | Отправлено: 17:58 19-04-2009
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Nagual, не как решать задачу в два прохода - давно известно и неинтересно.  
    хочется - в один, с однократным чтением входного потока. типа  
    чегото /ключи 1>new1.txt 2>new2.txt
    чем может помочь sed в этом - идей пока нет

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 20:30 19-04-2009 | Исправлено: wolf0425, 20:33 19-04-2009
    An4eus



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    BAT-ник с "ключами" запускается?

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

    Всего записей: 3768 | Зарегистр. 23-07-2007 | Отправлено: 21:21 19-04-2009
    ZeroCrash



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

    Дописал, но ничего не изменилось! Сама прога не запускается и всё!
    У меня SP3. Если не сможешь устранить неполадку, то может сможешь решить проблему по-другому?
    Вот сама прога, которую надо так запустить: http://webfile.ru/3425974
    Ещё раз пример запуска: volumeid c: d1s4-a3c4
    Очень расчитываю на твою помощь!
    За ранее благодарен!

    Всего записей: 43 | Зарегистр. 15-04-2009 | Отправлено: 22:29 19-04-2009 | Исправлено: ZeroCrash, 22:29 19-04-2009
    metraton



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

    Всего записей: 152 | Зарегистр. 04-10-2004 | Отправлено: 22:57 19-04-2009
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ZeroCrash
    У меня все отлично работает..  
    Проверь отсутствие концевых пробелов в строчках батника. Это в шапке самый первый пункт.

    Код:
     
    @echo off
    setlocal enabledelayedexpansion
     
    for %%i in (1,2,3,4) do (
        for %%j in (a,s,d,c,e) do set y_%%i_!random!=%%j
        for %%j in (1,2,3,4,5) do set x_%%i_!random!=%%j
    )
     
    for %%i in (1,2,3,4) do (
        for /f "tokens=4 delims=_=" %%j in ('set x_%%i') do set x-%%i=%%j
        for /f "tokens=4 delims=_=" %%j in ('set y_%%i') do set y-%%i=%%j
    )
     
    volumeid c: %x-1%%y-1%%x-2%%y-2%-%x-3%%y-3%%x-4%%y-4%
     
    :: Ниже перезагрузка, что бы изменения вступили в силу. Раскомментируй если надо сразу перезагрузиться.
    :: shutdown /r /t 0
     

     
    Проверить изменения можно командой label.
     
     
    Добавлено:
    An4eus
     
    Да, батник принимает внешние параметры.    

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



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    01MDM
    а можно пример?
    передаём два параметра - вывести сложение этих чисел

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

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



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

    Код:
     
    @echo off
    set /a res=%1+%2
    echo %1+%2=%res%
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 08:15 20-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