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

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

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

vu1tur (11-09-2007 15:22): продолжаем в теме Задачи на bat-файлах 4  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 11:54 27-04-2007 | Исправлено: Elroir, 03:59 10-09-2007
    dardreams



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

    Цитата:
    этот код обломится на границе часа - %h% тоже необходимо корректировать

     С этим я согласен.

    Цитата:
    А также этот код обломится в 08 или 09 минут любого часа...

    А тут я не понимаю почему он обломится ?
     
     
     
    Добавлено:
    KapralBel
    Привет, подскажи пожалуйста как сделать так чтобы окно было строго определенного размера.
    Например я делаю маленькое аккуратное окно 50 50 с помощью команды-программы hs_window 50 50
    но там есть скролл который мне не нужен. Возможно ли его убрать ?
    как я понял это надо изменить значение буфера консоли, но как это сделать я кроме реестра не нашел, да и там тоже как то не обычном формате написано.
     
    Добавлено:

    Цитата:
    REGEDIT4  
     
    [-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont]  
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont]  
    "0"="Lucida Console"  
     
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\MS-DOS Emulation\Font]  
    "Font"="Lucida Console"

     
    когда я тут меняю значение, шрифт вообще исчезает из консоли.
     
    Добавлено:
    Можно еще вопрос.
    ВОЗМОЖНО ЛИ чтобы в одной открытой консоли работало сразу два цикла
    Например.
    Я делаю часы с постоянным обновлением и милисекундами, и одновременно еще могу напечатать адрес к удалению файла ?

    Код:
     
    @echo off
    @cls
    @FOR /L %%a in (0,1,999999) Do Call rogram
    @cls
    @:program  
    @cls
    @set x=%time%
    @title %x%
    @cmd /t:00
    @goto :eof
     

    этот текст будет выводит часы в значение Title и тут же что то вроде

    Код:
     
    set /p x=
     

    ввести какуюнить переменную для каких либо действий.
    --------
    надеюсь я понятно объяснил...

    Всего записей: 100 | Зарегистр. 29-05-2007 | Отправлено: 07:14 14-08-2007
    KapralBel



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

    Цитата:

    Цитата:
    А также этот код обломится в 08 или 09 минут любого часа...

    А тут я не понимаю почему он обломится ?  

    0х - это восьмеричные числа
    а в 8-чной системе цифр 8 и 9 не существует
     

    Цитата:
    hs_window 50 50  

    Ничем не могу помочь в этом случае
     

    Цитата:
    шрифт вообще исчезает из консоли.

    А какой шрифт ты ставишь??
    Должен быть моноширинный

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



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

    Цитата:
    А какой шрифт ты ставишь??

    например TAHOMA
     
    Добавлено:

    Цитата:
    Например я делаю маленькое аккуратное окно 50 50 с помощью команды-программы hs_window 50 50  
    но там есть скролл который мне не нужен. Возможно ли его убрать ?

    Ктонибудь может с этим помочь ?

    Всего записей: 100 | Зарегистр. 29-05-2007 | Отправлено: 08:22 14-08-2007
    KapralBel



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

    Цитата:
    например TAHOMA

    Tahoma - это пропорциональный шрифт - не пойдет
    Набираешь в Ворде 2 строчки

    Цитата:
    шшшшшшшшшшшшшшшшшшшш (20 символов)
    iiiiiiiiiiiiiiiiiiii (20 символов)
     

    И начинаешь играться со шрифтами
    когда обе строчки будут одинаковой ширины на экране - то это нужный тебе шрифт
     
    Из стандартных -  
    * Lucida Console
    * Courier New
     
    может еще пару есть  не помню
     
    ЗЫ. я перебрал для консоли много вариантом (специально искал по инету моношир.шрифты) , но вернулся на Луциду Консоль - идеальный вариант

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



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

    Цитата:
     
    REGEDIT4  
     
    [-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont]  
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont]  
    "0"="Lucida Console"  
     
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\MS-DOS Emulation\Font]  
    "Font"="Lucida Console"
     

    Лучше не меняй, а добавляй шрифты

    Код:
     
    REGEDIT4  
     
    [-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont]  
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont]  
    "0"="Lucida Console"
    "00"="Consolas"
    "000"="Andale Mono"
     

     
    Consolas.ttf и ANDALEMO.ttf - Неплохие консольные шрифты. Правда Consolas не поддерживает псевдографику (рамочки и т.п). Шрифты не входят в стандартный набор.
     
     
    Добавлено:

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 08:40 14-08-2007
    dardreams



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

    Всего записей: 100 | Зарегистр. 29-05-2007 | Отправлено: 09:04 14-08-2007
    MsdLamer

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте мастера, подскажите пожалуйста я использовал слудующий код для подсчета суммы в файле, сумма выводится в другом файле, НО там есть одна проблемка, выводится не только сумма но и еще одна пустая строка в конце, которая в последствии мешает, можно ли как нибудь от нее избавится, чтобы была только одна строка с суммой?
    Спасибо.
     

    Цитата:
    @echo off  
    setlocal  
    set "sum=0.00"  
    for /f %%a in (1.txt) do call :math %%a  
    echo %sum%>2.txt  
    goto :EOF  
    :math  
    set "first=%sum%"  
    set "second=%1"  
    for /f "delims=. tokens=1,2" %%a in ("%first%") do (set "int1=%%a" & set "frac1=%%b")  
    for /f "delims=. tokens=1,2" %%a in ("%second%") do (set "int2=%%a" & set "frac2=%%b")  
    echo frac1=%frac1%  
    echo frac2=%frac2%  
    if %frac1% LSS 10 set "frac1=%frac1:~-1%"  
    if %frac2% LSS 10 set "frac2=%frac2:~-1%"  
    set /a "fr_sum=frac1+frac2"  
    set /a "int_sum=int1+int2"  
    if %fr_sum% GTR 99 (  
    set /a "int_sum+=1"  
    set "fr_sum=%fr_sum:~1%"  
    )  
    set "sum=%int_sum%.%fr_sum%"  
     


    Всего записей: 53 | Зарегистр. 26-07-2007 | Отправлено: 10:06 14-08-2007
    01MDM



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

    Цитата:
    А насчет 2 циклов можешь чтонить сказать ?

     
    Нет. Запускай второй скрипт через start. К тому-же как ты хочешь вводить информацию если у тебя консоль будет очищаться 999999 раз?
     
     
     
    Добавлено:
    MsdLamer

    Цитата:
     
    for /f %%a in (1.txt) do call :math %%a
     

     
    А у тебя в 1.txt нет в конце пустой строки?

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 10:11 14-08-2007
    vserd

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    MsdLamer
    Шапку читать уже не модно??????
    Альтернатива команде ECHO - позволяет выводить текст в файл без перевода строки

    Всего записей: 2065 | Зарегистр. 08-05-2002 | Отправлено: 10:30 14-08-2007 | Исправлено: vserd, 10:31 14-08-2007
    MsdLamer

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

    Всего записей: 53 | Зарегистр. 26-07-2007 | Отправлено: 10:33 14-08-2007
    Elroir



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

    Цитата:
    можно ли как нибудь от нее избавится, чтобы была только одна строка с суммой?

    Можно. Вместо строчки "echo %sum%>2.txt", поставь строчку  
    "set /p=%sum%<nul>2.txt"

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 15:00 14-08-2007
    MsdLamer

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

    Всего записей: 53 | Зарегистр. 26-07-2007 | Отправлено: 16:48 14-08-2007
    king_stiven

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Имеется путь, например E:\split\ fgh\fgjkl\  как подсчитать на сколько каталогов ты дапеко от корня диска без goto ? Желательно попроще. В путях встречаются любые знаки, с goto не получается. так как он идёт после нескольких  
    for %%i in ( ) do (
      for %%e in ( ) do (
         goto
         ...

    Всего записей: 2229 | Зарегистр. 17-07-2006 | Отправлено: 00:09 15-08-2007
    Elroir



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

    Цитата:
    Желательно попроще

    Кто же знает, что для тебя "попроще"
    Можно так:

    Код:
     
    for %%i in ( ) do (  
      for %%e in ( ) do (  
        set "counter=-1"
        set "p=E:\split\&!<>fgh\fgjkl\"
        call :count
        echo %counter%
        ..
    ))
    goto :EOF
     
    :count
    if "%p%"=="" goto :EOF
    if "%p:~0,1%"=="\" set /a "counter+=1"
    set "p=%p:~1%"
    goto count
     

    Проверяемый путь должен заканчиваться символом "\".


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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 00:42 15-08-2007
    NskRonin



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Люди подскажите.
     
    Задача следующая - надо замутить скрипт что бы все пользователи кторые забыли закрыть терминал были выкинуты например вечером по рассписанию (это я смогу - с рассписанием)
     
    Коткретно надо убивать процесс 1С - но это уже лудше держать планом б.
     
    Заранее спасибо.

    Всего записей: 1608 | Зарегистр. 10-05-2007 | Отправлено: 07:21 15-08-2007
    Maza Faka



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

    Код:
     
    taskkill /f /im process.exe
     

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 07:48 15-08-2007
    NskRonin



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Maza Faka
    Спасибо большое.
     
    Но нельзя всеже сделать скрипт завершения (сброса) терминальных пользователей?

    Всего записей: 1608 | Зарегистр. 10-05-2007 | Отправлено: 08:17 15-08-2007
    KapralBel



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

    Цитата:
    Но нельзя всеже сделать скрипт завершения (сброса) терминальных пользователей

    А это уже в настройки терминала - там есть это

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



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    KapralBel
    Спасибо. Наверно я совсем уже не умный стал... Хотя вчера вроде много не пили )
     

    Всего записей: 1608 | Зарегистр. 10-05-2007 | Отправлено: 08:34 15-08-2007
    Maza Faka



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

    Цитата:
    подсчитать на сколько каталогов ты дапеко от корня

    Так сойдёт?

    Код:
     
    @echo off
    set count=0
    set "myPath=C:\split\fgh\fgjkl\"
     
    :begin
    for /f "tokens=1* delims=\" %%a in ('echo %myPath%') do (
    set myPath=%%b
    set var=%%a
    if defined myPath (
    set /a count+=1
    goto begin)
    )
     
    echo Stek = %count%
     

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 08:35 15-08-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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 3
    vu1tur (11-09-2007 15:22): продолжаем в теме Задачи на bat-файлах 4


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru