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

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

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

vu1tur (26-05-2009 11:39): часть 7 — http://forum.ru-board.com/topic.cgi?forum=62&topic=17154#1  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

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





    http://forum.ru-board.com/topic.cgi?forum=62&topic=17154

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 23:07 04-11-2008 | Исправлено: vu1tur, 11:38 26-05-2009
    vitaliy91

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите пожалуйста:
    Имеется текстовый файл с длиными строками, больше 255 символов, нужно выстроить текст в файле (или вывести в другой файл) в столбик что-бы каждая строка была не более 255 символов.
    И скажите может ли вообще интерпретатор CMD работать со строками больше 255 символов, ибо чистый дос не может(
    Заранее спасибо.

    Всего записей: 37 | Зарегистр. 16-11-2008 | Отправлено: 16:56 23-04-2009
    Boxa_win

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Проблема такая:
    как в Bat или CMD файле получить IP клиента, открывающего терминальную сессию на сервере

    Всего записей: 8 | Зарегистр. 23-04-2009 | Отправлено: 17:03 23-04-2009
    NIKZZZZ



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

    Цитата:
    И скажите может ли вообще интерпретатор CMD работать со строками больше 255 символов

    Длина переменной ~4080 символов (на самом деле чуть больше)
    Как ее обрезать до 255 есть в справке по Set (Set /?)
     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 17:15 23-04-2009
    vitaliy91

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

    Всего записей: 37 | Зарегистр. 16-11-2008 | Отправлено: 17:27 23-04-2009
    NIKZZZZ



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

    Цитата:
    К сожалению в справке нет внятных примеров, и я незнаю как считывать строки из файла

    For /?

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 17:59 23-04-2009
    Elroir



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

    Код:
     
    @echo off
    setlocal
    for /f "tokens=*" %%a in (input.txt) do (set "line=%%a" & call :split)
    goto :EOF
    :split
    echo %line:~0,255%>>output.txt
    if not "%line:~255%"=="" (set "line=%line:~255%" & goto split)
     



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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 18:06 23-04-2009
    Upek

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите пожалуйста как уговорить zerat прикреплять файлы, извлеченные forfiles?
    Такая конструкция присылает пустое письмо без вложения.
     
    forfiles -p%~dp0 -m*.rar -d+0 -c"CMD /c zerat smtphost:адрес user:имя pass:пасс auth:login from:"имя" to:"имя" subject:"Hello, %%ToFullName" type:multipart/mixed $boun "Content-Type: text/plain; charset=windows-1250" Получи %%ToName,\n\nРезервную копию  $incl @FILE"
     
     
    Или может как-нибудь по другому решить проблему отсылки файла созданного сегодня?

    Всего записей: 22 | Зарегистр. 08-07-2006 | Отправлено: 18:20 23-04-2009 | Исправлено: Upek, 18:50 23-04-2009
    vitaliy91

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
     
    Когда в тексте попадаются значки  
    ">" "<" и "&" выполнение прерывается, даже если взять переменную %line:~0,255% в кавычки(
    текст - обычный HTML а там такого много. Можно както обойти это припятствие ? Эти значки можно даже поудалять, они мне собственно не нужны
    Заранее спасибо
     

    Всего записей: 37 | Зарегистр. 16-11-2008 | Отправлено: 18:53 23-04-2009
    ZeroCrash



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    У меня появилась ещё проблемка.
    Нужно чтобы батник генерировал случайное "слово" (англ. буквами) от 8 до 12 символов по маске: xyxyxyxyxy
    x - согласные буквы
    y - гласные буквы
     
    И это слово записывалось в реестр.

    Всего записей: 43 | Зарегистр. 15-04-2009 | Отправлено: 19:31 23-04-2009
    LiLysh

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    спасибо всем что помогли с задачей, но появилася новая...помогите плиз
    есть папка а1 в которой формуруетса файл много раз в день, надо батник, который будет запускатса перед формированием етого файла и копировал старый файл в папку а2 с тем же именем, но в конце чтоб додавалась дата копирование (месяц и число), а также номер копирование за день (4-значный счетчик) который с следующего дня начил опять отсчитывать с "0001"
    зарание благодарен

    Всего записей: 3 | Зарегистр. 04-03-2009 | Отправлено: 20:22 23-04-2009
    01MDM



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

    Код:
     
    @echo off
    setlocal enabledelayedexpansion
     
    for /l %%i in (1,1,4) do (
        for %%i in (q w r t p s d f g h j k l z x c v b n m) do set "l_1_!random!=%%i"
        for %%i in (e y u i o a) do set "l_2_!random!=%%i"
        call:word
    )
    echo %word%
    goto:eof
     
    :word
    for /f "tokens=2 delims==" %%i in ('set l_1') do set "a=%%i"
    for /f "tokens=2 delims==" %%i in ('set l_2') do set "b=%%i"
     
    set "word=%word%%a%%b%"
     
    for /f "tokens=1 delims==" %%i in ('set l_') do set "%%i="  
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 23:18 23-04-2009 | Исправлено: 01MDM, 23:19 23-04-2009
    ZeroCrash



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

    Код:
    @echo off
    setlocal enabledelayedexpansion
     
    for /l %%i in (1,1,4) do (
        for %%i in (q w r t p s d f g h j k l z x c v b n m) do set "l_1_!random!=%%i"
        for %%i in (e y u i o a) do set "l_2_!random!=%%i"
        call:word
    )
    echo %word%
    goto:eof
     
    :word
    for /f "tokens=2 delims==" %%i in ('set l_1') do set "a=%%i"
    for /f "tokens=2 delims==" %%i in ('set l_2') do set "b=%%i"
     
    set "word=%word%%a%%b%"
     
    for /f "tokens=1 delims==" %%i in ('set l_') do set "%%i="  
     
    set "regpath_1=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion"
    set "regpath_2=hHKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion"
     
     
    for /f "tokens=2 delims==" %%i in ('set regpath_') do (
        reg add "%%i" /v "ProductId" /t reg_sz /d %key% /f
    )  

     
    Он правильный?
    При запуске просит подтверждение и пишит что недопустимое имя раздела(

    Всего записей: 43 | Зарегистр. 15-04-2009 | Отправлено: 23:24 23-04-2009
    01MDM



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

    Код:
     
    @echo off
    setlocal enabledelayedexpansion
     
    for /l %%i in (1,1,4) do (
        for %%i in (q w r t p s d f g h j k l z x c v b n m) do set "l_1_!random!=%%i"
        for %%i in (e y u i o a) do set "l_2_!random!=%%i"
        call:word
    )
     
    set "regpath_1=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion"
    set "regpath_2=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion"
     
    for /f "tokens=2 delims==" %%i in ('set regpath_') do (
        reg add "%%i" /v "ProductId" /t reg_sz /d %word% /f
    )
     
    goto:eof
     
    :word
    for /f "tokens=2 delims==" %%i in ('set l_1') do set "a=%%i"
    for /f "tokens=2 delims==" %%i in ('set l_2') do set "b=%%i"
     
    set "word=%word%%a%%b%"
     
    for /f "tokens=1 delims==" %%i in ('set l_') do set "%%i="  
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 23:29 23-04-2009
    ZeroCrash



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    01MDM
     
    Спасибо!
     
    И теперь главный вопрос: Как связать несколько батников? Их лучше соединить в один или как? Нужно чтобы после выполнения первого батника запускался другой и т. д.
    Пробовал в конце батникоd дописывать start batnik.bat но при запуске получил кучу окон cmd и перегрузку системы(

    Всего записей: 43 | Зарегистр. 15-04-2009 | Отправлено: 23:43 23-04-2009
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ZeroCrash
    Лучше все поместить в один, но можно и вызывать один из другого. Выложи куда-нибудь все в одном архиве. Переименуй их по порядку запуска, если это важно.

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 08:38 24-04-2009
    mouser

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    я вот по такому вопросу что за ошибка и почему в цикле выскочила
     
     
    :begin
    setlocal enabledelayedexpansion
    if exist TMP\LOG\CHECK.txt del /q TMP\LOG\CHECK.txt
    if exist TMP\LOG\CNT del /q TMP\LOG\CNT
    set "count=0"
    for %%a in (TMP\LOG\CHECK*) do (
    set /a "count+=1"
    if "!count!" GEQ "3" (ECHO CNT>>TMP\LOG\CNT)
    )
    setlocal disabledelayedexpansion
    if exist TMP\LOG\CNT SET\sleep.exe 30
    if exist TMP\LOG\CNT goto begin
     
     
    через некоторое время выскочило
     
    Maximum setlocal recursion level reached.

    Всего записей: 800 | Зарегистр. 10-11-2006 | Отправлено: 08:39 24-04-2009
    01MDM



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

    Цитата:
    Maximum setlocal recursion level reached

    Замени "setlocal disabledelayedexpansion" на "endlocal"

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 08:47 24-04-2009
    mouser

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
     
    а что эта ошибка означает и почему выпала???

    Всего записей: 800 | Зарегистр. 10-11-2006 | Отправлено: 09:18 24-04-2009
    ZeroCrash



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    01MDM
     
    Попробуй сделать тогда лучше всё один.
     
    Ссылка

    Всего записей: 43 | Зарегистр. 15-04-2009 | Отправлено: 12:12 24-04-2009
    Hiveno

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Привет всем. Подскажите, пожалуйста, решение.
     
    На сервере по шедулеру периодически раз в сутки запускается батник, вызывает несколько внешних задач. Юзерам позволено запускать этот батник в произвольный момент времени.
    Одновременный запуск двух копий задачи допускать нельзя.
    Можно решить протсым файлом, кторый создает батник при старте и удаляет при выходе - работает / не работает.
    Может зашедулить и разрешить юзерам запускать задачу, а шедулер пусть не допускает повторного запуска - задача и так работает?

    Всего записей: 3 | Зарегистр. 22-04-2009 | Отправлено: 12:13 24-04-2009
       

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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 6
    vu1tur (26-05-2009 11:39): часть 7 — http://forum.ru-board.com/topic.cgi?forum=62&topic=17154#1


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru