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

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



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

    Цитата:

    ECHO OFF
    COLOR 9F
    CLS
    CD /D MYPAPKA
    setlocal enabledelayedexpansion
    FOR /F %%I IN ('DIR /B *.ISO') do SET /a count=!count!+1
    if count==1 (
    start "C:\Program Files\DAEMON Tools Lite\DTLite.exe" -mount 0, *.iso
    ) else (
    echo %count%
    )
    endlocal
    PAUSE  

    где MYPAPKA путь имя папки
     
    Добавлено:
    тута не совсем возможно корректно, потому что не знаю, будет ли работать даемон тулз если его рабочий путь не будет равен месту его расположения, тогда поменять надо немного пути всюду.

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 22:32 20-09-2010 | Исправлено: bomzzz, 23:19 20-09-2010
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    bomzzz
    Как ты думаешь:  
    Когда помрет %count%?  
    Что вернет условие if count==1? true или false

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 23:04 20-09-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    угу ендлокал надо вниз сместить
     
    Добавлено:
    или вообще не использовать если в батнике больше ничего нету
     
    Добавлено:

    Цитата:

    ECHO OFF
    COLOR 9F
    CLS
    setlocal enabledelayedexpansion
    FOR /F %%I IN ('DIR /B MYPAPKA\*.ISO') do SET /a count=!count!+1
    if count==1 (
    start /D "C:\Program Files\DAEMON Tools Lite\" DTLite.exe -mount 0, MYPAPKA\*.iso
    ) else (
    echo %count%
    )
    PAUSE  

     
    Добавлено:
    или так что как бы короче

    Цитата:

    ECHO OFF
    COLOR 9F
    CLS
    FOR /F %%I IN ('DIR /B MYPAPKA\*.iso ^| FIND /V /C ""') do (
    if %%I==1 (
    start /D "C:\Program Files\DAEMON Tools Lite\" DTLite.exe -mount 0, MYPAPKA\*.iso
    ) else (
    echo %%I
    )
    )
    PAUSE  

     
    Добавлено:
    файнд скорее всего быстрее перебор делает, чем сам батник фором.

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 23:19 20-09-2010 | Исправлено: bomzzz, 23:31 20-09-2010
    Free_Soft



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Задаю ключи управления батником так:

    Код:
    set par=%~1
    set par=%par:/=%
    if /i "%par%" == "1" goto:1

    Можно ли как-то в качестве параметра использовать два слова или два символа с пробелом? Заключение в кавычки результата не дает.

    Всего записей: 1515 | Зарегистр. 19-04-2010 | Отправлено: 22:08 21-09-2010 | Исправлено: Free_Soft, 22:09 21-09-2010
    01MDM



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

    Цитата:
    Заключение в кавычки результата не дает.

    Т.е. как это?

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 22:13 21-09-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    %par:/=% ета че такое

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 22:20 21-09-2010
    Free_Soft



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    bomzzz
    это чтобы параметр можно было использовать как в чистом виде, так и с символом "/". напр., /1
    01MDM

    Код:
    run.cmd /"rearm windows"

    выдает ошибку -
    Код:
    Непредвиденное появление Windows""

    Всего записей: 1515 | Зарегистр. 19-04-2010 | Отправлено: 22:27 21-09-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
     
     
    Добавлено:
    %par:/=% при таком - разделителем параметров и слеш и пробел. ниче не получица.
     
    Добавлено:
    http://www.masm32.com/board/index.php?topic=14702.0
    тебе типа такой проги надо, ну или возможно  еще какие то вещи не знаю типа %par:/=%

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 22:35 21-09-2010
    01MDM



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

    Цитата:
    Непредвиденное появление Windows""

    Не смог воспроизвести ошибку:

    Код:
     
    @echo off
    set par=%~1
    set par=%par:/=%
    echo %par%
     

     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 22:46 21-09-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    ему надо два параметра передать батнику, желательно разделив их пробелом

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 22:47 21-09-2010
    Free_Soft



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    bomzzz
    01MDM
    точнее передать параметр, состоящий из двух слов

    Всего записей: 1515 | Зарегистр. 19-04-2010 | Отправлено: 22:50 21-09-2010
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ну так все передается, только зачем слешь?

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 22:51 21-09-2010 | Исправлено: 01MDM, 22:52 21-09-2010
    Free_Soft



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

    Код:
    Microsoft Windows XP [Версия 5.1.2600]
    (С) Корпорация Майкрософт, 1985-2001.
     
    С:\>11.cmd win par
    win

    у меня только первое слово передается
     
    Добавлено:
    да, передается только без слеша
     
    Добавлено:
    блин, и со слешем сейчас передалось... извиняюсь за кипешь

    Всего записей: 1515 | Зарегистр. 19-04-2010 | Отправлено: 22:57 21-09-2010
    01MDM



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

    Код:
     
    С:\>11.cmd "win par"
    win par  
     

     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 23:00 21-09-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    передается? у меня чета нет
    echo %~1
    1 2 3 4 5 6 7 8 9 0
    только 1 передается
     
    Добавлено:
    ага - с кавычками передается
     
    Добавлено:
    "1 2 3 4 5 6 7 8 9"

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 23:02 21-09-2010 | Исправлено: bomzzz, 23:03 21-09-2010
    Free_Soft



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    bomzzz
    вот где собака порылась:

    Код:
    @echo off
    set par=%~1
    set par=%par:/=%
    echo %par%
    if /i "%par%" == "win rear" goto:1
    :1
    echo Windows rearm


    Код:
    echo %par%
    срабатыват, а вот
    Код:
    if /i "%par%" == ...  
    выдает ошибку. как быть?

    Всего записей: 1515 | Зарегистр. 19-04-2010 | Отправлено: 23:20 21-09-2010
    bomzzz



    Запрет на пост
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    :/=  - вот это убери

    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 23:41 21-09-2010
    Free_Soft



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

    Цитата:
    :/=  - вот это убери

    да, без него срабатывает. Но параметр нужен. Есть мысли?

    Всего записей: 1515 | Зарегистр. 19-04-2010 | Отправлено: 23:45 21-09-2010
    bomzzz



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

    Цитата:
    @echo off
    set par=%~1
    set par=%par%
    echo %par%
    if /i "%par%"=="win rear" goto:1
    goto :2
    :1
    echo Windows rearm  
    :2
    pause


    Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 23:46 21-09-2010 | Исправлено: bomzzz, 05:06 22-09-2010
    smirnvlad

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

    Цитата:
    Но параметр нужен. Есть мысли?

     

    Код:
     
    @echo off
    set "par=%1"
    set "par=%par:/=%"
    echo %par%
    if /i %par%=="win rear" goto:1
    goto :2
    :1
    echo Windows rearm  
    :2
    pause
     

    Всего записей: 417 | Зарегистр. 31-03-2009 | Отправлено: 00:44 22-09-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.Board
    © Ru.Board 2000-2020

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru