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

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

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

vu1tur (29-07-2011 12:47): Задачи на bat-файлах 11
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 102 103 104 105 106 107 108

   

vu1tur



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

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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 11:53 09-01-2011 | Исправлено: mazafakermazafaka, 11:22 04-06-2011
    01MDM



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

    Цитата:
    Подскажите, как можно определить существует папка или нет?

    Просто:

    Код:
     
    if exist c:\some\folder что-то делаем
     



    ----------
    Вопросы в личке останутся без ответа

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 22:53 26-04-2011
    lorents



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

    ----------
    Image Catalyst - оптимизация изображений без потери качества

    Всего записей: 3297 | Зарегистр. 30-12-2007 | Отправлено: 23:06 26-04-2011
    01MDM



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

    Код:
     
    if /?
    if defined
     


    ----------
    Вопросы в личке останутся без ответа

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 23:12 26-04-2011
    lorents



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    благодарю.
     
    Подскажите, а как такой код можно скомпоновать следующий код?

    Код:
    if defined png if "%png%" neq "0" if "%png%" neq "1" if "%png%" neq "2" if "%png%" neq "3" if "%png%" neq "4" if "%png%" neq "5" if "%png%" neq "6" if "%png%" neq "7" if "%png%" neq "8" (
        echo Error. Вы указали неправильное значение параметра оптимизации PNG.
        echo.
        goto:loop1
    )
    if not defined png (
        echo Error. Вы указали неправильное значение параметра оптимизации PNG.
        echo.
        goto:loop1
    )


    ----------
    Image Catalyst - оптимизация изображений без потери качества

    Всего записей: 3297 | Зарегистр. 30-12-2007 | Отправлено: 10:13 27-04-2011
    smirnvlad

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    lorents
    если пробелы не помешают до/после цифры в переменной png то:

    Код:
     
    if not defined png goto:png_error
    if %png% geq 0 if %png% leq 8 goto:png_ok
     
    :png_error
        echo Error. Вы указали неправильное значение параметра оптимизации PNG.
        echo.
        goto:loop1
     
    :png_ok
     

    а помешают их всегда можно предварительно отрезать set "png=%png: =%"

    Всего записей: 417 | Зарегистр. 31-03-2009 | Отправлено: 10:55 27-04-2011 | Исправлено: smirnvlad, 10:56 27-04-2011
    res2001



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

    Всего записей: 2580 | Зарегистр. 11-04-2003 | Отправлено: 10:58 27-04-2011 | Исправлено: res2001, 10:59 27-04-2011
    lorents



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

    Код:
    set folder=
    set /p folder=
    if not defined folder set folder=Images
    if not exist "%folder%" (
        goto:loop
    )

    Подскажите еще один момент, как сделать проверку, существует ли такая папка или нет?
    Если через exist, то он проверяет не только папки но файлы на их существование, а мне надо что мой проект различал, это папка или файл.

    ----------
    Image Catalyst - оптимизация изображений без потери качества

    Всего записей: 3297 | Зарегистр. 30-12-2007 | Отправлено: 14:23 27-04-2011 | Исправлено: lorents, 14:24 27-04-2011
    Bezzz

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

    Цитата:
    Подскажите еще один момент, как сделать проверку, существует ли такая папка или нет?  


    Код:
    if exist c:\mydir\nul dir c:\mydir

    Всего записей: 1071 | Зарегистр. 14-04-2005 | Отправлено: 14:31 27-04-2011 | Исправлено: Bezzz, 14:32 27-04-2011
    lorents



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Bezzz
    не много нет. Переформулирую вопрос, как определить, указан путь к папки и ли к файлу?

    Всего записей: 3297 | Зарегистр. 30-12-2007 | Отправлено: 14:39 27-04-2011
    Bezzz

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

    Код:
    if exist c:\mydir\nul dir c:\mydir

    Выполнит dir только в том случае, если mydir папка.

    Всего записей: 1071 | Зарегистр. 14-04-2005 | Отправлено: 14:41 27-04-2011 | Исправлено: Bezzz, 14:42 27-04-2011
    wolf0425



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

    Цитата:
    как сделать проверку, существует ли такая папка или нет?  

    Код:
    1>nul 2>nul dir /ad c:\mydir && echo Folder exist!

     
    в отличие от if exist  - такой вариант совершенно молча реагирует на недоступные в данный момент диски, ну нету флешки в картридере - значит нету, чего ж юзера спрашивать то...

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 16:11 27-04-2011 | Исправлено: wolf0425, 16:18 27-04-2011
    lorents



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

    Код:
    @echo off
     
    set folder=
    set /p folder=
     
    1>nul 2>nul dir /ad %folder%
    if errorlevel 1 (
        echo Папка не найдена
    ) else (
        echo Папка найдена
        )
    )
    pause


    ----------
    Image Catalyst - оптимизация изображений без потери качества

    Всего записей: 3297 | Зарегистр. 30-12-2007 | Отправлено: 16:36 27-04-2011 | Исправлено: lorents, 16:38 27-04-2011
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    lorents побочным и неприятным эффектом от проверки существования  диром - является её большая продолжительность в случаях, если в папке лежит несколько сотен тысяч файлов. А при нескольких тысячах - ещё вполне терпимо (хотя в цикл тоже лучше не ставить)    
     
     
     
     
    Как из командной строки остановить или наоборот стартовать встроенный виндовый фаервол?

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 16:46 27-04-2011 | Исправлено: wolf0425, 16:50 27-04-2011
    01MDM



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

    Цитата:
     
    Как из командной строки остановить или наоборот стартовать встроенный виндовый фаервол?
     

    Попробуй:

    Код:
     
    netsh firewall set opmode enable/disable
     



    ----------
    Вопросы в личке останутся без ответа

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



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425 понятно, но как я понимаю, другого выхода нету.

    Код:
    :loop
    set folder=
    set /p folder=
    if not defined folder set folder=Images
    1>nul 2>nul dir /ad "%folder%"
    if errorlevel 1 (
        echo Error. Указанная папка не обнаружена.
        goto:loop
    )

     
    Я вот сделал, как мне надо, все работает. Появилась, только одна проблема, кавычки.
    Смотрите если запустить bat и перекинуть в него папку, то я полу адрес папки с кавычками, как мне от них избавится?


    ----------
    Image Catalyst - оптимизация изображений без потери качества

    Всего записей: 3297 | Зарегистр. 30-12-2007 | Отправлено: 18:35 27-04-2011 | Исправлено: lorents, 18:44 27-04-2011
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    lorents
    А чем не устроил вариант с if exist папка\nul ?


    ----------
    Вопросы в личке останутся без ответа

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 18:59 27-04-2011
    lorents



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    Я просто не понял, как сделать мое задуманное через if exist папка\nul
    а он лучше чем 1>nul 2>nul dir /ad папка?

    ----------
    Image Catalyst - оптимизация изображений без потери качества

    Всего записей: 3297 | Зарегистр. 30-12-2007 | Отправлено: 19:19 27-04-2011
    smirnvlad

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    lorents
    if %folder:~0,1%""" == """" if %folder:~-1,1%""" == """" set "folder=%folder:~1,-1%"
     
    01MDM

    Цитата:
    А чем не устроил вариант с if exist папка\nul ?  

     
    а как его заставить работать с пробелами в пути папки?
     

    Код:
     
    if not exist C:\Documents and Settings echo.1
    if not exist C:\Documents and Settings\nul echo.2
    if not exist "C:\Documents and Settings\nul" echo.3
    if not exist "C:\Documents and Settings"\nul echo.4
    if not exist "C:\Documents and Settings\"nul echo.5
     

    Всего записей: 417 | Зарегистр. 31-03-2009 | Отправлено: 19:23 27-04-2011
    01MDM



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

    Код:
     
    :loop
    set "folder="
    set /p folder="Укажите путь: "
     
    if not defined folder set "folder=Images"
    if not exist %folder%\nul (
         
        echo Error. Указанная папка не обнаружена.
        goto:loop
     
    )  
     


    Цитата:
    а он лучше чем 1>nul 2>nul dir /ad папка?

    В принципе без разницы
     
    Добавлено:

    Цитата:
    а как его заставить работать с пробелами в пути папки?

    Хм, да, тогда dir


    ----------
    Вопросы в личке останутся без ответа

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 19:28 27-04-2011
    lorents



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

    Цитата:
     if %folder:~0,1%""" == """" if %folder:~-1,1%""" == """" set "folder=%folder:~1,-1%"  

    А можно сделать, чтобы поддерживал такие варианты:
    "D:\Прочее\Image Catalyst\Tools
    D:\Прочее\Image Catalyst\Tools"

    ----------
    Image Catalyst - оптимизация изображений без потери качества

    Всего записей: 3297 | Зарегистр. 30-12-2007 | Отправлено: 19:42 27-04-2011
       

    Страницы: 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 102 103 104 105 106 107 108

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 10
    vu1tur (29-07-2011 12:47): Задачи на bat-файлах 11


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru