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

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

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

evle (19-03-2008 19:44): Лимит страниц.
Задачи на bat-файлах 5
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 15:21 11-09-2007 | Исправлено: Elroir, 01:52 26-02-2008
    king_stiven

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

    Цитата:
    Некатит. Просто виснит и всё.

     

    Код:
    @echo off  
    set out=D:\Test  
    set in=E:\MyFolder  
    cd /d "%out%"  
    for %%a in ("%out%") do set buk=%%~da  
    :begin  
    set /a sum+=1  
    if /i "%cd%" neq "%buk%\" (  
        cd ..  
        goto begin  
    )  
    set /a sum+=1  
    setlocal enabledelayedexpansion  
    set blok=!sum!  
    setlocal DISABLEDELAYEDEXPANSION  
    for /f "usebackq tokens=*" %%d in (`dir "%out%\*.*" /b /s /a:-d`) do (  
        If /I Not "%%~xd"==".DMF" (  
            If /I Not "%%~xd"==".DMFr" (  
                for /f "tokens=%blok%* delims=\" %%e in ("%%~dpd") do set "way=%%e\%%f"  
                set "way1=%%d"  
                call :Moving  
            )  
        )  
    )  
    :Moving  
    md "%in%\%way%"  
    Move "%way1%" "%in%\%way%"  

     
    Проблема: в D:\Test остаются пустые папки , могут быть с вложенными пустыми папками. Лень доделовать.)

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 20:12 19-09-2007 | Исправлено: king_stiven, 22:33 19-09-2007
    dardreams



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    есть возможность узнать четное или не четное число ? только короткий вариант

    Всего записей: 100 | Зарегистр. 29-05-2007 | Отправлено: 08:17 20-09-2007
    01MDM



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

    Код:
     
    set x=4
    set y=x/2*2
    if %x%==%y% echo even number else echo odd number
     

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



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

    Код:
     
    set x=4  
    set /a y=x/2*2  
    if %x%==%y% goto :even
    echo odd number
    goto :EOF
    :even
    echo even number  
     


    Всего записей: 343 | Зарегистр. 07-05-2002 | Отправлено: 09:21 20-09-2007 | Исправлено: Rurik, 09:23 20-09-2007
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Ну если короткий,то чут поправим 01MDM

    Код:
    set x=5
    set /a y=x/2*2
    if %x%==%y% (echo even number ) else (echo odd number )


    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 09:49 20-09-2007
    dardreams



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    KapralBel
    спасибо, это для определения високосного года )

    Всего записей: 100 | Зарегистр. 29-05-2007 | Отправлено: 09:54 20-09-2007
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Rurik
     
    Проверял  
     
     
    Добавлено:
    dardreams
    Для високосного года дели и умножай на 4

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 09:58 20-09-2007
    klasny

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите пожалуйста вариант для подключения по сетке с паролем с помощью бат файла.
     
    в ручную это делается следующим образом:
     
    В RUN пишется название или IP компьютера (например \\192.168.0.2)
     
    Окно запрашивает имя пользователя и код
     
    После этого компьютеру доступны принтер и файлы сети или данного компьютера.  
     
    После перезагрузки если компьютер не на сервере доступ пропадает и мне нужен файл который можно положить в автозапуск с восстановлением доступа.

    Всего записей: 2 | Зарегистр. 20-09-2007 | Отправлено: 10:01 20-09-2007
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    klasny
    Net use Z: \\192.168.0.2\C$ /User:User_Name user_Password
     
    Добавлено:
    Вернее
     
     Net Use \\192.168.0.2 /User:User_Name user_Password
     
    PS. Net /? - очень много интересного узнаешь

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 10:18 20-09-2007
    dardreams



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    KapralBel
    забыл знак % поствить )

    Код:
     
    set x=5  
    set /a y=%x%/2*2  
    if %x%==%y% (echo even number ) else (echo odd number )  
     

    Всего записей: 100 | Зарегистр. 29-05-2007 | Отправлено: 10:45 20-09-2007
    klasny

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

    Цитата:
    klasny
    Net use Z: \\192.168.0.2\C$ /User:User_Name user_Password
     
    Добавлено:
    Вернее
     
    Net Use \\192.168.0.2 /User:User_Name user_Password
     
    PS. Net /? - очень много интересного узнаешь  

     
    Спасибо, работает

    Всего записей: 2 | Зарегистр. 20-09-2007 | Отправлено: 11:37 20-09-2007
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    dardreams
     
    set /a позволяет использовать переменную без знаков процента

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 11:42 20-09-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    Rurik
    KapralBel
    Вообще-то set /a позволяет использовать оператор % (mod).
    То есть четность числа или деление на какое-то число без остатка, можно проверять с помощью этого оператора

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

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



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Elroir
    Можно, но короче не станет
    Все равно

    Код:
    Set /A
    If

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 16:02 20-09-2007
    NIKZZZZ



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

    Цитата:
    Все равно
    Set /A
    If

    Короче не станет, но без IF можно обойтись:

    Код:
    Set /a Swith=x % 2
    Goto _%Swith%
    :_0
    ..........
    :_1
    ..........
     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 16:58 20-09-2007
    KapralBel



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

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 17:52 20-09-2007
    Nagual



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    народ, такая задача, не могу разобраться никак
    надо забрать произвольные данные с сайта в переменную, а при ошибке выйти
    пример
    for /f "tokens=5 delims=>< " %%b in ('curl http://qip.ru/ru/pages/download_qip_ru/^|findstr/i "Build"') do set build=%%b
    очень хотется использовать команду, которая в цикле как разделитель, а не использовать ее дважды, то есть если команда завершилась успешно, то продолжить батник, если нет, то выйти из него
    можно ли это сделать? и как?
    и еще, можно ли заменить стандартными средствами команду в цикле?

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 18:02 20-09-2007
    NIKZZZZ



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

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

    Ну, можно и от Set /a отказаться.

    Код:
    for /l %%i in (%x%,-2,0) do set xx=%%i
    if %xx%==0 (echo even number ) else (echo odd number )


    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 18:11 20-09-2007
    KapralBel



    Platinum Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Тогда и IF & FOR лишние
     

    Код:
    Set na=15
    Set no=%na:~-1%
    GoTo :l%no%
    GoTo :EOF
     
    :l1
    :l3  
    :l5
    :l7  
    :l9
    Echo НеЧет
    GoTo :EOF
     
    :l0
    :l2
    :l4
    :l6
    :l8
     
    Echo Чет
    GoTo :EOF
     

    Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 18:24 20-09-2007
    01MDM



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

    Код:
     
    set n=16
    echo %n:~-1% | findstr "0 2 4 6 8" >nul
    if %errorlevel%==0 (echo even) else (echo odd)
     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 19:03 20-09-2007
       

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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 4
    evle (19-03-2008 19:44): Лимит страниц.
    Задачи на bat-файлах 5


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru