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

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



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Друзья, вот еще одна заморочка.
     
    Есть текстовый файл _text_.txt в нем текст с символами < > ё млн.
    Необходимо заменить символы
    < на "
    > на "
    ё на е
    млн. на млн
    двойные пробелы на одинарные и т.д.
    А потом сохранить результат в этом же файле.
     
     
    ЗЫ. Maza Faka и мужики, спасибо большое за батник по раздербанке оперативной сводки! Самое интересное, что в инете подобных программ я не нашел!
     
     
     
    Добавлено:
    Мужики, может кому понадобится  
     
    bat2exec.com   [6 KB]   http://bonza.narod.ru/FILES/UTILS/bat2exec.com
    bat2com.com   [6 KB]  http://bonza.narod.ru/FILES/UTILS/bat2com.com

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

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

    Цитата:
    Я просил список последних строчек, чтобы воспроизвести ошибку.
    ушло в личку

    Всего записей: 1380 | Зарегистр. 30-04-2003 | Отправлено: 21:08 09-06-2007
    AntoshAReal



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Народ, помогите, плиз
     
    Надо сделать батник, который запустит прогу и закроется (сам батник, что бы его окно не висело)
    А то надо этот Toonel.net запустить как службу, скомпилил в exe, установил как службу, пашет, но мешается окно
     
    Запуск проги:
     

    Код:
     
    C:\WINDOWS\system32\javaw.exe -jar c:\toonel\toonel.jar -t
     

    Всего записей: 305 | Зарегистр. 31-08-2005 | Отправлено: 21:22 09-06-2007 | Исправлено: AntoshAReal, 21:24 09-06-2007
    Elroir



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

    Код:
    start C:\WINDOWS\system32\javaw.exe -jar c:\toonel\toonel.jar -t

     
    mitrichbel

    Цитата:
    ушло в личку  

    OK - посмотрю.

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 21:26 09-06-2007
    AntoshAReal



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir,
    Большое спасибо!
    Что-то забыл про это

    Всего записей: 305 | Зарегистр. 31-08-2005 | Отправлено: 21:33 09-06-2007
    Maza Faka



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    FAPSUK
    Без привлечения сторонних утилит.
    Если исходный код в DOS кодировке, то и батник сохраняешь в DOS кодировке:

    Код:
     
    @Echo off
    setlocal enabledelayedexpansion
     
    for /f "delims=" %%a in (_text_.txt) do (
    set string=%%a
    set string=!string:ё=е!
    set string=!string:^>="!
    set string=!string:^<="!
    set string=!string:  = !
    set string=!string:млн.=млн!
    echo !string!>> out.txt)
     

     
    НО, если в тексте есть сиволы !, то в выходном файле их не будет, лучше воспользоваться Unix-утилитами, GSAR или SED, получится быстрее и без проблем с симолом "!", но вот с кириллицей они у меня не заработали

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 09:29 10-06-2007
    wolf0425



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

    Цитата:
    но вот с кириллицей они у меня не заработали

    что значит "не заработали"?
    gsar.exe просто не считает их за буквы (Ignore case не работает) а в остальном - ищет/заменяет нормально.
    только кодировка строки параметров и обрабатываемого файла должна совпадать

    Всего записей: 2929 | Зарегистр. 25-04-2007 | Отправлено: 10:43 10-06-2007
    FAPSUK



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Maza Faka ТЫ МАСТЕР!  
    Спасибо!!!

    Всего записей: 18 | Зарегистр. 02-03-2006 | Отправлено: 11:14 10-06-2007
    JohnRD

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
     
    спасибо большое  
    теперь дошло
     
    еще несколько странный вопрос
     
    каким образом можно вычислить имя машины или ip к которой было произведено подключение к рабочему столу с текущей машины и вставить это имя в переменную?
    желательно учитывая логин человека который это делал, поскольку это терминальный сервер и соединений может быть больше одного
     
    C:\Documents and Settings\john>netstat
    Active Connections
      Proto  Local Address          Foreign Address        State
      TCP    asus:1032              10.0.0.2:3389          ESTABLISHED
     
    есть процес
    srv-Remote Desktop  mstsc.exe  ASUS\john  
     
    спасибо

    Всего записей: 205 | Зарегистр. 29-08-2004 | Отправлено: 11:25 10-06-2007
    FAPSUK



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Еще вопрос -  
    Адаптировал БАТ-ник под свои нужды, получается косячок
     
    55f.com 55 0 %1 _%1  (форматирует текстовую строку длиной 55 символов, отступ 0)
     
    @Echo off
    setlocal enabledelayedexpansion
    for /f "delims=" %%a in (_%1) do (
    set string=%%a
    set string=!string:ё=е!
    set string=!string:^>="!
    set string=!string:^<="!
    set string=!string:  = !
    set string=!string:млн.=млн!
    echo !string!>> out.txt)
    del _%1
    ren out.txt _%1
     
    В текстовых файлах вместе с символом переноса строки стоит пробел, вместо которого в тексте вставляется текст:
    Режим вывода команд на экран (ECHO) отключен.
    Что с этим делать?
     
    Текст текст текст
     (тут пробел, вместо которого вставляется "Режим вывода команд на экран (ECHO) отключен.")
    Текст текст текст
     
    Добавлено:
    Может написать строку замены символа переноса строки с пробелом на просто символ переноса строки?
    Как в бат-нике прописать нажатие Alt+13"пробел" ?

    Всего записей: 18 | Зарегистр. 02-03-2006 | Отправлено: 12:49 10-06-2007 | Исправлено: FAPSUK, 13:16 10-06-2007
    Maza Faka



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

    Цитата:
    ТЫ МАСТЕР!

    Да какой я мастер...так любитель, мастера здесь igor_andreev и Elroir,  а, я у них учусь
     

    Цитата:
    В текстовых файлах вместе с символом переноса строки стоит пробел, вместо которого в тексте вставляется текст:  
    Режим вывода команд на экран (ECHO) отключен.

    В строке перенаправления текста в файл, поставь точку после "ECHO"

    Код:
     
    echo.!string!>> out.txt
     

     
    Способ №2
    Скачай эти утилиты и скопируй их в папку "WINDOWS", батник сохрани в DOS кодировке.

    Код:
     
    @Echo off
    if exist out.tmp del /f /q out.tmp
    type _text_.txt | sbs2.com 0 "ё" "е" | sbs2.com 0 "млн." "млн"> out.tmp
    gsar -s"<" -r""" -o out.tmp
    gsar -s">" -r""" -o out.tmp
    gsar -s"  " -r" " -o out.tmp
    del /q /f _text_.txt
    ren out.tmp _text_.txt
     

    Работает быстрее и без проблем с символами "!"
     
    wolf0425

    Цитата:
    что значит "не заработали"?

    GSAR работает c кириллицей, но, как-то странно, если исходный текст в Windows кодировке, то батник нужно сохранять в DOS кодировке, иначе не работает, а если текст в DOS кодировке, то вообще игнорирует кириллицу.

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 14:04 10-06-2007 | Исправлено: Maza Faka, 14:13 10-06-2007
    Elroir



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

    Цитата:
    каким образом можно вычислить имя машины или ip к которой было произведено подключение к рабочему столу с текущей машины и вставить это имя в переменную?


    Код:
     
    @echo off
    setlocal
    for /f "tokens=4 delims=: " %%a in ('netstat ^| find ":3389"') do set "rdp_ip=%%a"
    echo %rdp_ip%
     

    Будет работать только если на удаленной машине используется стандартный порт RDP.
    И еще одна вещь - если подключений несколько - будет выдан адрес последнего в списке.

    Цитата:
    желательно учитывая логин человека который это делал

    Ничего в голову не приходит - не могу придумать, как это сделать.
     
    Maza Faka

    Цитата:
    мастера здесь igor_andreev и Elroir

    Да ладно - я тоже учусь    
    Но читать такое, конечно, приятно    


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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 14:34 10-06-2007
    FAPSUK



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Maza Faka ВСЁ ЖЕ ТЫ МАСТЕР !
    Еще раз спасибо!  
    ЗЫ. Да и тем парням сам Гейтс позавидует в том, что вы вытворяете с (если можно так сказать) ДОСом  
    Прям FIDORULEZ какой-то !

    Всего записей: 18 | Зарегистр. 02-03-2006 | Отправлено: 00:42 11-06-2007 | Исправлено: FAPSUK, 00:47 11-06-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mitrichbel
    Пробуй следующий код (работает медленнее предыдущего, так что прежде чем он выдаст результат, может пройти минута-две) :

    Код:
     
    @echo off
    setlocal enabledelayedexpansion
    echo.
    del /q /f "%temp%\fext.txt" 2>nul
    del /q /f "%temp%\sext.txt" 2>nul
    for /r %%a in (*.txt) do call :check %%~na
    for /f "usebackq" %%a in ("%temp%\sext.txt") do (
    echo Files grouped by "%%a" ending:
    dir /s /b "* %%a.txt"
    echo.
    )
    del /q /f "%temp%\fext.txt" 2>nul
    del /q /f "%temp%\sext.txt" 2>nul
    goto :EOF
     
    :check
    ::maybe we've found last two part of filename
    if "%3"=="" (
      ::if it realy consists of two parts  
      if not "%2"=="" (
        set "test2=no"  
        set "test=%2"
        ::if second part is not zero
        if not !test!==0 ( set /a "test1=!test!-1"
          ::if the result is -1 - it's not a number
          if not !test1!==-1 (set "test2=yes")
        ) else (
        ::if the second part is zero - OK, it's a number
        set "test2=yes")
        ::if we found number
        if !test2!==yes (
         ::check whether it is already in the list
         find "%2" "%temp%\fext.txt">nul 2>nul
         ::if not - add it to the list
         if not !errorlevel!==0 (echo.%2>>"%temp%\fext.txt") else (
           find "%2" "%temp%\sext.txt">nul 2>nul
           if not !errorlevel!==0 (echo.%2>>"%temp%\sext.txt")
         )
        )
      )
    ) else (
    ::the filename has more then 2 parts - shift it by 1 position to the left
    shift
    ::try again
    goto check
    )
     


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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 01:36 11-06-2007
    mitrichbel

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
    В результате получил несколько искомых пар. Спасибо тебе!

    Всего записей: 1380 | Зарегистр. 30-04-2003 | Отправлено: 11:27 11-06-2007
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите, как вывести из файла строку, содержащую "!"
     

    Код:
     
    setlocal enabledelayedexpansion
    for /f "delims=" %%i in ('type %1') do (
        set line=%%i
        echo !line!
    )
     

     
    Содержание файла:

    Код:
     
    111111111
    =======
    !!!!!!!!!!!!!!!
     
     

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



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

    Код:
     
    @echo off
    for /f "delims=" %%i in ('type %1') do (  
    set line=%%i  
    call :echoline  
    )
    goto :EOF
    :echoline
    echo %line%
     
     


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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 22:20 11-06-2007
    01MDM



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

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 22:24 11-06-2007
    euheny



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    как поместить размер файла (байты) в переменную

    Всего записей: 4174 | Зарегистр. 22-11-2006 | Отправлено: 03:59 12-06-2007
    Elroir



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

    Код:
    for %%a in (file.txt) do set "size=%%~za"


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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 04:03 12-06-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