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

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

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

vu1tur (04-11-2008 23:07): Задачи на bat-файлах 6  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

Nagual



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

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

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

  • Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 12:28 19-03-2008 | Исправлено: Nagual, 01:02 24-09-2008
    Dis74



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ага. уже понял.  
    2 147 483 647  
    никак не обойти это ограничение? 2 гига мало..

    Всего записей: 166 | Зарегистр. 12-11-2007 | Отправлено: 14:28 20-08-2008
    slay1212

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

    Цитата:
    Есть необходимость запустить TrueCrypt на удаленной системе и смонтировать зашифрованный контейнер под буквой T

      Попробуй нужную команду из ком строки. Я пускаю такие вещи обычно с ситсемной учетной записью - если есть права у тебя . Также я бы убрал start.
    d:\inst\exec\psexec.exe \\%adr%  -s   \\CompName\TrueCrypt\TrueCrypt.exe /l T /v %pathkey% /p %pass2%  
      Еще права на каталоги проверь и Путь рathkey должен быть сетевым - из-за этого чато не работает.

    Всего записей: 335 | Зарегистр. 28-05-2008 | Отправлено: 15:17 20-08-2008
    vu1tur



    Moderator-Saaber
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Dis74
    ну, я бы изначально писал это на перле
    Ещё можно делить на 1024 и терять в точности

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

    Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 15:27 20-08-2008 | Исправлено: vu1tur, 15:27 20-08-2008
    NIKZZZZ



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

    Цитата:
    в синтаксических конструкциях типа %~dpnx1 не предусмотрено расширение переменной до РАЗМЕРА ПАПКИ  


    Код:
    @echo off
    if %2==0 goto :eof
    set /a n=%2-1
    set size=0
    for /r %~dpnx1 %%i in (*.*) do (
      call :sum  %%~zi
    )  
    :_1
    if %size%==0 goto _2
    if not %size:~0,1%==0 goto _2
    set size=%size:~1%
    goto _1
    :_2
    echo Folder:  %size%  %~dpnx1
    for  %%i in (%1\*) do (
      echo File:   %%~zi  %%~dpnxi
    )  
    for /d %%i in (%1\*) do (
      call "%~dpnx0" "%%~dpnxi" %n%
    )  
    goto :eof  
    :sum
    set s=0000000000000000%1
    set s=%s:~-16%
    set size=0000000000000000%size%
    set size=%size:~-16%
    set /a sr=1%s:~-8%+1%size:~-8%-200000000
    set sr=0000000000000000%sr%
    set sr=%sr:~-16%
    set /a sl=1%s:~0,-8%+1%size:~0,-8%+1%sr:~0,-8%-300000000
    set sl=0000000000000000%sl%
    set sl=%sl:~-8%
    set size=%sl%%sr:~-8%
    goto :eof  

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 16:13 20-08-2008
    winhex



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

    ----------
    А сегодня что для завтра сделал я ?..

    Всего записей: 628 | Зарегистр. 27-02-2005 | Отправлено: 17:17 20-08-2008
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    winhex
    Если поискать по инету, может и найдется решение.
    Если тебе нужно просто скрыть вводимый пароль, тогда можно так:

    Код:
     
    @echo off
    echo hP1X500P[PZBBBfh#b##fXf-V@`$fPf]f3/f1/5++u5>in.com  
    set  /p password=Enter password:<nul
    for /f "tokens=*" %%i in ('in.com') do set "password=%%i"
    del in.com
    echo.
    echo The Password is:"%password%"
     


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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 18:10 20-08-2008
    pgofman2

    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    01MDM
     
    Величайшее спасибо - ошибку осознал
    Спасибо за предложенный вариант - работает отлично
     
    последний вопрос - а как добавить в этот скрипт проверку
    на наличие Сетевого Соединения как такового?
    так как если соединение выключено - то скрипт не работает
     

    Всего записей: 66 | Зарегистр. 07-09-2006 | Отправлено: 08:18 21-08-2008
    DocBeen



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Доброго времени суток Уважаемые,  
    подскажите как правельна написать батник, чтоб при перемещении на него файла - выполнялась операция с ним,  
     
    пример имеем файл test.inf - поместив на него ( на сам батник этот Файл ) выполняется упаковка его в CAB АРХИВ,  
    с синтаксисом создания файла я разобрался сам батник  
    для моего примера будет таким:  
    makecab test.inf  
     
    в каталоге с батником будет лежать Cab архив test.in_  
     
    так вот что надо написать в батнике, вместо имени - чтоб операция выполнялась по дрг дропс ...

    Всего записей: 147 | Зарегистр. 15-07-2005 | Отправлено: 09:35 21-08-2008
    Tipulatoid



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Игра "Жизнь", реализованная в батнике. Just for fun.

    Код:
    @echo off
    setlocal enabledelayedexpansion
    set height=8
    set width=8
     
    :read
    :: Чтение cостояния вселенной
     
    if exist tmp (
       set map=tmp
    ) else (
       set map=universe.txt
    )
     
    set y=0
     
    for /f "tokens=*" %%a in (%map%) do (
       set x=0
       call :readline "%%a"
       set /a y+=1
    )
    del /q tmp 2>nul
    goto :live
     
    :readline
    :: Чтение строки
     
    set string=%~1
    if "!string:~%x%,1!" neq "" (
       set /a x+=1
       if "!string:~%x%,1!" equ "W" (
          set cell_X%x%_Y%y%=alive
       ) else (
          set cell_X%x%_Y%y%=
       )
       goto :readline
    )
     
     
    goto :eof
     
    :live
    :: Изменение состояния ячеек
    for /l %%a in (0,1,%height%) do (
       set row=
       for /l %%b in (0,1,%width%) do (
          set aliveneighbours=0
          if not !aliveneighbours! gtr 3 call :neighbour %%b -1 %%a -1
          if not !aliveneighbours! gtr 3 call :neighbour %%b +0 %%a -1
          if not !aliveneighbours! gtr 3 call :neighbour %%b +1 %%a -1
          if not !aliveneighbours! gtr 3 call :neighbour %%b -1 %%a +0
          if not !aliveneighbours! gtr 3 call :neighbour %%b +1 %%a +0
          if not !aliveneighbours! gtr 3 call :neighbour %%b -1 %%a +1
          if not !aliveneighbours! gtr 3 call :neighbour %%b +0 %%a +1
          if not !aliveneighbours! gtr 3 call :neighbour %%b +1 %%a +1
     
          if !aliveneighbours! leq 1 set newcell_X%%b_Y%%a=
          if !aliveneighbours! geq 4 set newcell_X%%b_Y%%a=
          if !aliveneighbours! equ 2 set newcell_X%%b_Y%%a=!cell_X%%b_Y%%a!
          if !aliveneighbours! equ 3 set newcell_X%%b_Y%%a=alive
     
          if !newcell_X%%b_Y%%a! equ alive (
             set row=!row!W
          ) else (
             set row=!row!.
          )
       )
       echo !row!>>tmp
    )
     
    cls
    set /a iter+=1
    type %map%
    echo.
    echo Шаг №%iter%
    goto read
     
    :neighbour
    :: Обзор соседей
    set /a neighbourx=%~1%~2
    set /a neighboury=%~3%~4
    if !cell_X%neighbourx%_Y%neighboury%! equ alive set /a aliveneighbours+=1
    goto :eof

     
    Размер вселенной меняется в начале батника
     
    Первоначальное состояние вселенной берет из universe.txt, например такого:

    Код:
    .........
    .........
    .........
    ....W....
    ...WWW...
    ....W....
    .........
    .........
    .........

     
    Тормозит это всё конечно безбожно. Буду рад любым советам по оптимизации.
     
    Добавлено:
    DocBeen

    Код:
    makecab "%~1"


    Всего записей: 349 | Зарегистр. 22-12-2006 | Отправлено: 09:59 21-08-2008
    VitRom

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

    Цитата:
    Буду рад любым советам по оптимизации
    Э... ASM? C?

    Всего записей: 2967 | Зарегистр. 18-06-2006 | Отправлено: 12:40 21-08-2008
    merphy69

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    камрады, подскажите как реализовать следующую задачу:
     
    есть директории opath и mail
    set opath=d:\iconv\outcome\
    set mail=d:\iconv\outcome\@mail\
     
    необходимо найти все файлы *.eml в opath и во всех ее поддиректориях и переместить в папку mail
     
    спасибо!
     
    Добавлено:

    Цитата:
    камрады, подскажите как реализовать следующую задачу:
     
    есть директории opath и mail
    set opath=d:\iconv\outcome\
    set mail=d:\iconv\outcome\@mail\
     
    необходимо найти все файлы *.eml в opath и во всех ее поддиректориях и переместить в папку mail
     
    спасибо!

     
    ответ нашелся здесь:
    http://forum.ru-board.com/topic.cgi?forum=5&topic=25393&start=1200#8

    Всего записей: 16 | Зарегистр. 01-04-2008 | Отправлено: 15:15 21-08-2008
    7yu8



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Привет всем.
    Такая задача. На сервере 2003 вечером нужно логофить терминальные сессии цитрикса котые висят в дисконнекте, нашол вот такой скрипт:
     
    query session | find /v ">" | find "wdica" | find /v "6553" > session.txt
    type session.txt |find /v "ica-tcp#" > noactive.txt
    for /f "tokens=1,2,3" %%I in (noactive.txt) do echo Y|logoff %%J
    #del noactive.txt
    #del session.txt
     
    файлы формируються нормально
    а дальше его циклит и сессии не отрубаються,
    хотя если просто написать в батнике  logoff 22 например - то все работает.
    В чем проблема, напишите как правильно

    Всего записей: 76 | Зарегистр. 15-07-2005 | Отправлено: 17:14 21-08-2008
    01MDM



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

    Цитата:
    последний вопрос - а как добавить в этот скрипт проверку
    на наличие Сетевого Соединения как такового?  

     
    Попробуй добавить сам
    Вот этот код для проверки:

    Код:
     
    @echo off
     
    for /f "tokens=1,2" %%i in ('wmic nic get deviceid^,netconnectionstatus') do (
        if "%%i" equ "1" (
            if "%%j" equ "2" (echo net is on) else (echo net is off)
        )
    )
     

     
    Сразу предупреждаю, что deviceid здесь мой (1). Свой можно узнать по названию сетевой карты командой:

    Код:
     
    wmic nic get name,deviceid,netconnectionstatus
     

     
    И netconnectionstatus:
    0 - отключено
    2 - подключено
    7 - нет сетевого кабеля
     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 10:50 22-08-2008
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    7yu8
    Вот эта строчка какая то странная
    Код:
    for /f "tokens=1,2,3" %%I in (noactive.txt) do echo Y|logoff %%J
     

    Всего записей: 2167 | Зарегистр. 17-07-2006 | Отправлено: 12:27 22-08-2008
    7yu8



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    king_stiven
    да я сам догадывась что именно в ней и кроеться нечто
    вот пример noactive.txt  
     
                       Ќ в                      15  Disc    wdica                
                       filimonova               22  Disc    wdica                
                       obezuglaya               23  Disc    wdica      
     
    нужно чтоб в цикле выполнялась команда logoff с номером сесиии  
    в данном случае три раза, вот так :  
    logoff 15  
    logoff 22  
    logoff 23  
     
    Добавлено:
    УРААААА !!!  
    все, проблема решена  
     
    Следует иметь в виду, что данный файл ни в коем случае нельзя называть именем системной команды, например, Logoff.bat, иначе возможно зацикливание выполнения ...  
     
    всем спасибо  

    Всего записей: 76 | Зарегистр. 15-07-2005 | Отправлено: 12:48 22-08-2008
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Не проскакивал где-либо архиватор, позволяющий распаковывать .iso ? Консольная версия 7z работает как-то непонятно.

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 19:08 22-08-2008
    yurkesha



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
    UltraISO в консольном режиме устроит? А-ля:
    ultraiso -silent -input 1.iso -list filename
    ultraiso -silent -input 1.iso -extract NEWDIR -get filename
     

    Всего записей: 2704 | Зарегистр. 15-12-2003 | Отправлено: 19:50 22-08-2008 | Исправлено: yurkesha, 19:52 22-08-2008
    NIKZZZZ



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

    Цитата:
    UltraISO в консольном режиме устроит?

    UISO требует установки и регистрации, нужен какой-либо бесплатный архиватор, который можно кинуть рядом с батником. Хотя, может и Uiso в консольном режиме пройдет в триальном варианте.  
     
     
     
    Добавлено:
    7za.exe - при попытке полностью распаковать Iso , распаковал только один файл , упакованный в Cab. То-есть он посчитал Iso образ каталогом, нашел там упакованный файл и распаковал его !  

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 20:26 22-08-2008
    Nagual



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

    Всего записей: 528 | Зарегистр. 06-01-2006 | Отправлено: 20:34 22-08-2008 | Исправлено: Nagual, 20:42 22-08-2008
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Nagual
    7za.exe x file.iso -od:\xxx *.* -r

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 21:38 22-08-2008
       

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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 5
    vu1tur (04-11-2008 23:07): Задачи на bat-файлах 6


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

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.Board
    © Ru.Board 2000-2020

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru