Можно ли вторым батником менять title первого батника?
» Задачи на bat-файлах 8
Maximus777
При совпадении %key% и %vol1% значение переменной %%i будет равно value1.
В чем проблема?
При совпадении %key% и %vol1% значение переменной %%i будет равно value1.
В чем проблема?
Joo1z
в том, что value3 даст такое же совпадение.
в том, что value3 даст такое же совпадение.
Joo1z
Цитата:
а он хочет значение из конкретной.
Добавлено:
Maximus777 не халявь, делай нормальный разбор с запоминанием имени секции.
Ну или sed'ом секцию вырежи перед поиском. или вместо поиска.
Цитата:
В чем проблема?в одноименных ключах vol1 в разных секциях инишника.
а он хочет значение из конкретной.
Добавлено:
Maximus777 не халявь, делай нормальный разбор с запоминанием имени секции.
Ну или sed'ом секцию вырежи перед поиском. или вместо поиска.
wolf0425
ну ... вобщем ... хотелось схалявить
Было бы просто замечательно, если можно при нахождении имени раздела, вытянуть следующую строку. А там бы я уже разобрался.
ну ... вобщем ... хотелось схалявить
Было бы просто замечательно, если можно при нахождении имени раздела, вытянуть следующую строку. А там бы я уже разобрался.
наверно так:
Код: for /f %%a in (' sed -r -n "/^\[razdel: name1\]/,/^\[.*\]/ s/^vol1=(.*)/\1/p" ^<file.ini ') do echo set name1_vol1=%%a
Код: for /f %%a in (' sed -r -n "/^\[razdel: name1\]/,/^\[.*\]/ s/^vol1=(.*)/\1/p" ^<file.ini ') do echo set name1_vol1=%%a
Цитата:
в том, что value3 даст такое же совпадение.
Да... промограл. SED в помощь.
Вот с sed'ом трабл, надо без оного, только встроенными средствами. Можно как-нить сделать так?
Код: for /F "usebackq delims=" %%i in (`Find /I "%name_razdel%=" %FileToRead%`) do set Value=%FileToRead%[строка(%%i)+1]
Код: for /F "usebackq delims=" %%i in (`Find /I "%name_razdel%=" %FileToRead%`) do set Value=%FileToRead%[строка(%%i)+1]
Цитата:
Вот с sed'ом трабл, надо без оного, только встроенными средствами
наверно тяжело быть мазохистом?
тогда пиши честный цикл полного разбора строк - с вычислением/сравнением текущего имени секции. давно бы написал, если бы не думал как схалявить.
Цитата:
Можно как-нить сделать так? [строка(%%i)+1]можно, но не нужно - если кто-то в инишник впишет пустую строку, комментарий или просто переставит строки секции местами - работать перестанет. и это не сильно и короче будет, чем рчной разбор строк на секции.
Free_Soft
знаю как делать, оказывается консольный ввод и вывод в винде устроен таким образом
type my.txt | clip.exe
когда батник доходит до выполнения этой команды, команда type сначала начинает распечатывать файл в буфер консоли пока он не закончится 4 кб, когда он закончится или закончится поток, выполняется вторая половинка команды - запускается программа клип.екзе, которая считывает 4 кб, после чего следующая порцайка ну и тд
вот только не понятно как сразу получить полный размер. придется возится с ресайзом выделеной памяти, в которую копируется весь поток и потом просто указатель буфера обмена на него переводится
Добавлено:
ну то есть можно хоть 100 мб так скопировать, только бы оперативки хватило
Добавлено:
а сам клип.екзе написан на Visual Studio 2010, видимо не самый оптимальный язык, но и написана полная обработка ошибок, то есть практически после каждого более или менее важного оператора стоит обработка возможных ошибок, из за такой параноилной корректности так и радулась программа до 25 кб, хотя большинство этих ошибок так или иначе выдала бы система
знаю как делать, оказывается консольный ввод и вывод в винде устроен таким образом
type my.txt | clip.exe
когда батник доходит до выполнения этой команды, команда type сначала начинает распечатывать файл в буфер консоли пока он не закончится 4 кб, когда он закончится или закончится поток, выполняется вторая половинка команды - запускается программа клип.екзе, которая считывает 4 кб, после чего следующая порцайка ну и тд
вот только не понятно как сразу получить полный размер. придется возится с ресайзом выделеной памяти, в которую копируется весь поток и потом просто указатель буфера обмена на него переводится
Добавлено:
ну то есть можно хоть 100 мб так скопировать, только бы оперативки хватило
Добавлено:
а сам клип.екзе написан на Visual Studio 2010, видимо не самый оптимальный язык, но и написана полная обработка ошибок, то есть практически после каждого более или менее важного оператора стоит обработка возможных ошибок, из за такой параноилной корректности так и радулась программа до 25 кб, хотя большинство этих ошибок так или иначе выдала бы система
bomzzz
Да я уже твою 2-килобайтную использую))) мне нужно то - строка текста и все
Да я уже твою 2-килобайтную использую))) мне нужно то - строка текста и все
завтра может доделаю - я еще с изменением размера выделенной памяти не делал ничего. а щас тут с видеоадаптером замыкаю
Добавлено:
просто не понятно как делать - выделить 10 мб а потом обрезать или по 4 кб добавлять - надо больше почитать про память чтоб стало понятно чем такое кончится
Добавлено:
просто не понятно как делать - выделить 10 мб а потом обрезать или по 4 кб добавлять - надо больше почитать про память чтоб стало понятно чем такое кончится
sed -nr "/\/><a href=\"/s/^.*\/><a href=\"(.*)\".*$/\1/pg" index.php
sed должна искать строку, содержащую:
/><a href="
и выводить:
.............><br /><br ><a href="ftp://media.net/incoming" ><div alig..................
Пишет Непредвиденное появление: <.
Причём пишет cmd а не sed
А если убрать из скрипта двойную кавычку экранированную знаком \ , то работает, но двойные кавычки не убираются. Не пойму, чем экранировать двойную кавычку .
sed должна искать строку, содержащую:
/><a href="
и выводить:
.............><br /><br ><a href="ftp://media.net/incoming" ><div alig..................
Пишет Непредвиденное появление: <.
Причём пишет cmd а не sed
А если убрать из скрипта двойную кавычку экранированную знаком \ , то работает, но двойные кавычки не убираются. Не пойму, чем экранировать двойную кавычку .
Доброй ночи всем.
Помогите пож-ста в решении проблемы, я не знаю как это реализовать...
Есть батники которые делают разные отчеты в htm и логи в txt и есть батник в котором прописанны параметры отправки по почте этих отчетов,
и те и этот скомпилированны в exe-шники и прикрученны как сервисы для того что бы можно было выборочно включать и выключать те или иные
отчеты по мере надобности. Так вот, тот бвтник в котором прописанны параметры отправки по почте этих отчетов, он у меня как почтовый сервис.
Его смысл заключается в том что бы при отключенном почтовом сервисе уведомления по почте не приходили, но логи писались бы.
Информация в логах и почтовых уведомлениях разная, и логи ни при каких обстоятельствах отключать нельзя...
Так вот, суть проблемы заключается в том что при отключении почтового сервиса уведомления все равно приходят, так как те сервисы которые
создают отчеты в htm и логи в txt обращаются не посредственно к ФАЙЛУ почтового сервиса, который лежит на диске С, и им всеравно отключен ли
этот сервис или нет.
На данный момент в том батнике (скомпилированном в exe) который делает отчеты в htm и логи в txt прописанно -
Call c:\Mail.exe
Дальше этот "Mail.exe" рассылает почтовые уведомления адресатам...
Вопрос, можно ли реализовать батник который делает разные отчеты в htm и логи в txt таким образом что бы он обращался не посредственно к почтовому сервису, и если этот сервис запущен, то что бы он ТОЛЬКО ТОГДА направлял команду на Call c:\Mail.exe...?
И если такой вариант возможен, то приведите пож-ста хотя бы пример кода который нужно прописать в место "Call c:\Mail.exe"...
Заранее благодарю, надеюсь на ответ...
Помогите пож-ста в решении проблемы, я не знаю как это реализовать...
Есть батники которые делают разные отчеты в htm и логи в txt и есть батник в котором прописанны параметры отправки по почте этих отчетов,
и те и этот скомпилированны в exe-шники и прикрученны как сервисы для того что бы можно было выборочно включать и выключать те или иные
отчеты по мере надобности. Так вот, тот бвтник в котором прописанны параметры отправки по почте этих отчетов, он у меня как почтовый сервис.
Его смысл заключается в том что бы при отключенном почтовом сервисе уведомления по почте не приходили, но логи писались бы.
Информация в логах и почтовых уведомлениях разная, и логи ни при каких обстоятельствах отключать нельзя...
Так вот, суть проблемы заключается в том что при отключении почтового сервиса уведомления все равно приходят, так как те сервисы которые
создают отчеты в htm и логи в txt обращаются не посредственно к ФАЙЛУ почтового сервиса, который лежит на диске С, и им всеравно отключен ли
этот сервис или нет.
На данный момент в том батнике (скомпилированном в exe) который делает отчеты в htm и логи в txt прописанно -
Call c:\Mail.exe
Дальше этот "Mail.exe" рассылает почтовые уведомления адресатам...
Вопрос, можно ли реализовать батник который делает разные отчеты в htm и логи в txt таким образом что бы он обращался не посредственно к почтовому сервису, и если этот сервис запущен, то что бы он ТОЛЬКО ТОГДА направлял команду на Call c:\Mail.exe...?
И если такой вариант возможен, то приведите пож-ста хотя бы пример кода который нужно прописать в место "Call c:\Mail.exe"...
Заранее благодарю, надеюсь на ответ...
Free_Soft
CURRENT.EXE
до 1 мб копирует. увеличить чета не получилось, обрезать удалось, от перекодировки отказался - неправильно перекодирует русский текст, кодировку надо самому в батнике менять на 1251. потом еще поковыряюсь может лучше получится.
echo off и просто запуск она отличает
Добавлено:
а в микрософтовском клипе скорее всего ошибка. когда делал у меня тоже так получилось как у них - ошибки не выдает, а копирует до 4174X2. сам не понял почему но исправил
Добавлено:
наверно консоль так работает что количество символов не всегда до полного размера буфера типа такого...
CURRENT.EXE
до 1 мб копирует. увеличить чета не получилось, обрезать удалось, от перекодировки отказался - неправильно перекодирует русский текст, кодировку надо самому в батнике менять на 1251. потом еще поковыряюсь может лучше получится.
echo off и просто запуск она отличает
Добавлено:
а в микрософтовском клипе скорее всего ошибка. когда делал у меня тоже так получилось как у них - ошибки не выдает, а копирует до 4174X2. сам не понял почему но исправил
Добавлено:
наверно консоль так работает что количество символов не всегда до полного размера буфера типа такого...
Mark_Titov,
теоретически:
Код:
tasklist | 1>nul findstr mail.exe && call c:\mail.exe
теоретически:
Код:
tasklist | 1>nul findstr mail.exe && call c:\mail.exe
bomzzz
последняя версия ставит знак переноса строки в конце
последняя версия ставит знак переноса строки в конце
01MDM, спасибо, верно, можно и так, чего-то я не подумал о этом.
Исходя из этого можно же и проверку статуса самого сервиса сделать?
Ну типа проверки запущен или нет сам сервис, если запущен, то Call c:\Mail.exe, если нет то goto begin...
Я думаю что это надежнее будет?
Можешь подсказать как это можно сделать?
Исходя из этого можно же и проверку статуса самого сервиса сделать?
Ну типа проверки запущен или нет сам сервис, если запущен, то Call c:\Mail.exe, если нет то goto begin...
Я думаю что это надежнее будет?
Можешь подсказать как это можно сделать?
king_stiven
Цитата:
Добавлено:
Mark_Titov
Цитата:
а проверить состояние вервиса через sc перед вызовом - чем-то не устраивает?
И если рассылкой занимается сервис - как получилось что его ещё и вызывать надо, а не он сам находит отсылаемые данные в каком-то списке?
Цитата:
А если убрать из скрипта двойную кавычку экранированную знаком \ , то работает, но двойные кавычки не убираются. Не пойму, чем экранировать двойную кавычку .хексом её подставь, \x22
Добавлено:
Mark_Titov
Цитата:
и если этот сервис запущен, то что бы он ТОЛЬКО ТОГДА направлял команду
а проверить состояние вервиса через sc перед вызовом - чем-то не устраивает?
И если рассылкой занимается сервис - как получилось что его ещё и вызывать надо, а не он сам находит отсылаемые данные в каком-то списке?
wolf0425
Цитата:
В нем прописанны ТОЛЬКО почтовые параметры и список рассылки, и все, он не должен находить отсылаемые данные, этим занимается другие сервисы...
Добавлено:
Цитата:
Я про то и говорю, просто с sc не справлюсь сам...
Цитата:
как получилось что его ещё и вызывать надо, а не он сам находит отсылаемые данные в каком-то списке?
В нем прописанны ТОЛЬКО почтовые параметры и список рассылки, и все, он не должен находить отсылаемые данные, этим занимается другие сервисы...
Добавлено:
Цитата:
а проверить состояние вервиса через sc перед вызовом
Я про то и говорю, просто с sc не справлюсь сам...
Mark_Titov
Цитата:
Добавлено:
на раз нашел там подходящую строку, которую легко можно упростить до нужного перехода.
sc %server% query !_service_%reply%! | findstr /r /b /c:" *STATE " | 1>nul find "RUNNING" && Echo Service is running!
комп удаляешь, имя сервиса вписываешь жестко...
Добавлено:
Цитата:
никаких сервисных функций ты на него не навесил.
Цитата:
просто с sc не справлюсь сам...ну это же вроде для тебя писали показывалку/отключалку сервисов. ты до сих пор не разобрался как она работает???
Добавлено:
на раз нашел там подходящую строку, которую легко можно упростить до нужного перехода.
sc %server% query !_service_%reply%! | findstr /r /b /c:" *STATE " | 1>nul find "RUNNING" && Echo Service is running!
комп удаляешь, имя сервиса вписываешь жестко...
Добавлено:
Цитата:
В нем прописанны ТОЛЬКО почтовые параметры и список рассылки, и все,тогда в чем смысл того, что он прописан в системе как сервис?
никаких сервисных функций ты на него не навесил.
wolf0425, спасибо...
Цитата:
Я же выше все написал вроде...
При остановке оного, письма не будут отсылаться, а только ЛОГИ писаться будут на винт...
Добавлено:
А где его имя вписать в этой строке, что бы он не все сервисы проверял, а только его...?
Цитата:
тогда св чем смысл того, что он прописан в системе как сервис?
Я же выше все написал вроде...
При остановке оного, письма не будут отсылаться, а только ЛОГИ писаться будут на винт...
Добавлено:
А где его имя вписать в этой строке, что бы он не все сервисы проверял, а только его...?
Цитата:
А где его имя вписать в этой строке,вместо !_service_%reply%!
Добавлено:
Цитата:
При остановке оного, письма не будут отсылаться, а только ЛОГИ писаться будут на винт...да он у тебя и запущенный ничего не отсылает пока его как команду не запустят.
Free_Soft
она делает именно так как выдает строку батник. попробуй
echo KKKKK| MY.TXT и увидишь что это батник ставит, чтоб его не было
type my.txt|current.exe
Добавлено:
а если его убрать то тогда в текстовыъ файлах обрехается последний знак.
зхначит параметры надо делать комманднйо строки
Добавлено:
впрочем щас вот так попробую
Цитата:
Добавлено:
вот зараза а так пробел ставит
Добавлено:
ну естественно ехо ставит перенос иначе бы текст всегда был в одну строку
она делает именно так как выдает строку батник. попробуй
echo KKKKK| MY.TXT и увидишь что это батник ставит, чтоб его не было
type my.txt|current.exe
Добавлено:
а если его убрать то тогда в текстовыъ файлах обрехается последний знак.
зхначит параметры надо делать комманднйо строки
Добавлено:
впрочем щас вот так попробую
Цитата:
<nul set /p strTemp=Весь этот текст
<nul set /p strTemp=будет находиться
<nul set /p strTemp=на одной строке.
Добавлено:
вот зараза а так пробел ставит
Добавлено:
ну естественно ехо ставит перенос иначе бы текст всегда был в одну строку
wolf0425
Спасибо тебе большое, теперь все работает как надо...!
Цитата:
Он всего лишь нужен для того что бы можно было им управлять, и всего-то...
А сейчас когда прикрутили функцию проверки состояния этого сервиса, все стало на свои места.
Теперь, запускаешь почтовый сервис - письма идут, останавливаешь его - писем нет, как и должно быть...
Благодарю...
Спасибо тебе большое, теперь все работает как надо...!
Цитата:
да он у тебя и запущенный ничего не отсылает пока его как команду не запустят.
Он всего лишь нужен для того что бы можно было им управлять, и всего-то...
А сейчас когда прикрутили функцию проверки состояния этого сервиса, все стало на свои места.
Теперь, запускаешь почтовый сервис - письма идут, останавливаешь его - писем нет, как и должно быть...
Благодарю...
Free_Soft
CURRENT.EXE
так попробуй
CURRENT.EXE
выводит в консоль соджержимое буфера обмена.
echo off | current.exe
стирает буфер обмена
type my.txt | current.exe /2/65536
обрезает в конце 2 символа (перенос строки это два символа) и задает новый размер буфера в байтах, по умолчанию 1 мб.
если поток превысит размер буфера то в него ничего не запишется. сам не заметил в какой момент так стало работать и почему.
type my.txt | current.exe /2
так только обрезает
чтоб сменить кодировку
chcp 1251
dir | current.exe
как делать это автоматом не разобрался еще
CURRENT.EXE
так попробуй
CURRENT.EXE
выводит в консоль соджержимое буфера обмена.
echo off | current.exe
стирает буфер обмена
type my.txt | current.exe /2/65536
обрезает в конце 2 символа (перенос строки это два символа) и задает новый размер буфера в байтах, по умолчанию 1 мб.
если поток превысит размер буфера то в него ничего не запишется. сам не заметил в какой момент так стало работать и почему.
type my.txt | current.exe /2
так только обрезает
чтоб сменить кодировку
chcp 1251
dir | current.exe
как делать это автоматом не разобрался еще
помогите, хочу сменить букву флешки через батник
WMIC Path Win32_Volume Where Label="Имя_Флэшки" Set DriveLetter=R:
что то не получается, выдает такую штуку
ОШИБКА:
Код = 0х80041002
Описание = Не найден
Услуга = WMI
в чем дело кто нибудь знает
WMIC Path Win32_Volume Where Label="Имя_Флэшки" Set DriveLetter=R:
что то не получается, выдает такую штуку
ОШИБКА:
Код = 0х80041002
Описание = Не найден
Услуга = WMI
в чем дело кто нибудь знает
PulsSe
совсем недавно, как бы не вчера видел такую темку или вопрос в разделе Операционные системы, про смену буквы флешки.
http://technet.microsoft.com/ru-ru/library/cc757491(WS.10).aspx
Цитата:
совсем недавно, как бы не вчера видел такую темку или вопрос в разделе Операционные системы, про смену буквы флешки.
http://technet.microsoft.com/ru-ru/library/cc757491(WS.10).aspx
Цитата:
Использование командной строки
1. Откройте окно «Командная строка».
2. Введите:
diskpart
3. В командной строке DISKPART введите:
list volume
Запишите номер простого тома, для которого выполняется назначение, смена или удаление буквы диска.
4. В командной строке DISKPART введите:
select volumen
Выбор тома n, для которого выполняется назначение, смена или удаление буквы диска.
5. В командной строке DISKPART введите одну из следующих команд:
* assign letter=L
L — буква диска, которую требуется назначить или сменить.
* remove letter=L
L — буква диска, которую требуется удалить.
А можно конкретный код на батнике как это будет, и что бы батник работал прямо с флэшки.
т.е. батник запустил, буква флешки сменилась - все гуд
т.е. батник запустил, буква флешки сменилась - все гуд
Хитрый какой
ECHO OFF
COLOR 9F
CLS
echo list volume| diskpart
pause
дальше сам делай. я не буду буквы у себя менять
ECHO OFF
COLOR 9F
CLS
echo list volume| diskpart
pause
дальше сам делай. я не буду буквы у себя менять
Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
Предыдущая тема: XP не видит второй раздел на съемном USB-HDD
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.