Ru-Board.club
← Вернуться в раздел «Microsoft Windows»

» Задачи на bat-файлах 6

Автор: Alexza
Дата сообщения: 22.04.2009 16:46
Всем привет!
Помогите плиз. Провайдер Yota (беспроводная сеть wimax), для выхода в инет используется USB модем и софт провайдера "YotaAccess", который, при обнаружении сети сам подключает комп к инету, IP выдается по DHCP, все стоит на серваке 2003. Проблема следующая: периодически (не часто) происходит переподключение, и из-за неизвестных глюков, комп не может получить IP по DHCP, то есть он "зацикливается" на получении айпишника. Известно из форума "еты", что это проблема не только моя но и многих пользователей их сети. Лечится или отключением-включением сетевого интерфейса, либо вытыкания-втыкания usb-модема. Часть задачи решил следующим образом: сделал батник который проверяет интерфейс с инетом и при обнаружении состояния "Недостижимый" перегружает его. Поставил его в "планировщик" с интервалом 1 минута.
Текст батника:

netsh interface show interface "инет" | find "Недостижимый" >> C:\Yota\%DATE%-yota.log
IF ERRORLEVEL 1 goto EXITE
netsh interface set interface "инет" disabled
netsh interface set interface "инет" enabled
:EXIT

Но вот остались некоторые ньюансы , цикл получения IP следующий: около 20 сек. идет попытка получения IP, затем секунд 10 происходит переподключение (сетевой кабель не подключен), в момент получения адреса состояние интерфейса "Подключен" и только в 10 секунд переподключения состояние интерфейса определяется как "Недостижимый" (время дано приблизительное). Как уже писал выше, батник запускается каждую минуту и иногда приходится ждать до 20 минут пока совпадет время запуска батника и состояние интерфейса "Недостижимый".
Собственно вопрос: можно ли определить с помощью BAT-файла, что интерфейс в данный момент времени получает адрес по DHCP (то есть не работает) и все-равно его перезапустить. Или можно еще что-нибудь придумать?
Вопрос второй. Пару раз было следуещее: после 10 минут безуспешного получения IP по DHCP, на "мониторчиках", где "состояние сети" появился восклицательный знак и надпись "Подключение отсутствует или ограниченно", то есть инет опять не работал а интерфейс оределялся как "Подключен" - помогло отключение-включение через диспетчер оборудования модема. Может есть возможность в батнике отключать оборудование?
Может у кого по этому поводу есть советы.... Заранее всем спасибо!
Автор: smirnvlad
Дата сообщения: 22.04.2009 17:45
batniki


Код:
@echo off

for /f "tokens=* delims=" %%a in (ini.ini) do call:il %%a

@echo result: _%ini_b_bbn%_

:il
if _==_%~1 goto:eof

set line=%*
set sline=%line:"=%

if _%sline:~0,1%_==_[_ (
if ""%sline:~-1%""==""]"" (
set section=%sline:~1,-1%
goto:eof
)
)

for /f "tokens=1,* delims==" %%a in ("%line%") do (
set param=%%a
set value=%%b
set ini_%section%_%%a=%%b
)

@echo line: [%section%] _%param%_ = _%value%_


goto:eof

Автор: mike345S
Дата сообщения: 22.04.2009 18:03
Подскажите как можно сделать чтобы при перетаскивании мышкой файла на батник, присвоить его имя с полным путем в переменную для использования в этом же батнике?
Автор: smirnvlad
Дата сообщения: 22.04.2009 19:12
mike345S


Код:
echo file: %1
pause
Автор: mike345S
Дата сообщения: 22.04.2009 19:18
smirnvlad, спасибо!
Ларчик просто открывался
Автор: smirnvlad
Дата сообщения: 22.04.2009 19:33
Alexza
может вместо состояния подключения проверять идут ли пинги до нескольких серверов и тогда уже переподключаться


Код:
@echo off

for %%a in (yota.ru;microsoft.com;google.com) do (

ping -n 1 %%a 1>nul
if ERRORLEVEL 1 (
echo No pong from %%a
) else (
echo Pong from %%a recived
goto ok
)

)

echo Inet down. Restart...

netsh interface set interface "инет" disabled
netsh interface set interface "инет" enabled

goto:eof

:ok
echo Inet OK

Автор: TechnicsKuzya
Дата сообщения: 23.04.2009 11:23
Всем привет! Помогите, пожалуйста, по быстрому сконвертировать IEPostUpdateInstall.cmd в exe файл

Код:
if /I "%1"=="/On" goto PostUpdateOn
if /I "%1"=="/Off" goto PostUpdateOff
exit

:PostUpdateOn
REG ADD "HKLM\SOFTWARE\Microsoft\Internet Explorer\Setup\7.0\WU" /v ForcePostUpdateInstall /t REG_DWORD /d 1 /f
exit

:PostUpdateOff
REG DELETE "HKLM\SOFTWARE\Microsoft\Internet Explorer\Setup\7.0\WU" /f
exit
Автор: Alexza
Дата сообщения: 23.04.2009 12:44
smirnvlad
Спасибо за совет, действительно, в конечном итоге мне нужен рабочий инет и поэтому нет смысла смотреть на состояние интерфейсов. Пинг есть - хорошо, пинга нет - ребут . Если будет глючить USB-модем то и с его перезагрузкой разобрался.

Цитата:
devcon restart *PID_6761*MI_00*

Только возникает вопрос, а не будет ли плохо модему от частых перезагрузок?
Автор: vitaliy91
Дата сообщения: 23.04.2009 15:56
Помогите пожалуйста:
Имеется текстовый файл с длиными строками, больше 255 символов, нужно выстроить текст в файле (или вывести в другой файл) в столбик что-бы каждая строка была не более 255 символов.
И скажите может ли вообще интерпретатор CMD работать со строками больше 255 символов, ибо чистый дос не может(
Заранее спасибо.
Автор: Boxa_win
Дата сообщения: 23.04.2009 16:03
Проблема такая:
как в Bat или CMD файле получить IP клиента, открывающего терминальную сессию на сервере
Автор: NIKZZZZ
Дата сообщения: 23.04.2009 16:15
vitaliy91

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

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

Автор: vitaliy91
Дата сообщения: 23.04.2009 16:27
К сожалению в справке нет внятных примеров, и я незнаю как считывать строки из файла(
Автор: NIKZZZZ
Дата сообщения: 23.04.2009 16:59
vitaliy91

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

For /?
Автор: Elroir
Дата сообщения: 23.04.2009 17:06
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)
Автор: Upek
Дата сообщения: 23.04.2009 17:20
Подскажите пожалуйста как уговорить 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"


Или может как-нибудь по другому решить проблему отсылки файла созданного сегодня?
Автор: vitaliy91
Дата сообщения: 23.04.2009 17:53
Elroir

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

Автор: ZeroCrash
Дата сообщения: 23.04.2009 18:31
У меня появилась ещё проблемка.
Нужно чтобы батник генерировал случайное "слово" (англ. буквами) от 8 до 12 символов по маске: xyxyxyxyxy
x - согласные буквы
y - гласные буквы

И это слово записывалось в реестр.
Автор: LiLysh
Дата сообщения: 23.04.2009 19:22
спасибо всем что помогли с задачей, но появилася новая...помогите плиз
есть папка а1 в которой формуруетса файл много раз в день, надо батник, который будет запускатса перед формированием етого файла и копировал старый файл в папку а2 с тем же именем, но в конце чтоб додавалась дата копирование (месяц и число), а также номер копирование за день (4-значный счетчик) который с следующего дня начил опять отсчитывать с "0001"
зарание благодарен
Автор: 01MDM
Дата сообщения: 23.04.2009 22:18
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="
Автор: ZeroCrash
Дата сообщения: 23.04.2009 22:24
Проверь код:


Код: @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
)
Автор: 01MDM
Дата сообщения: 23.04.2009 22:29
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="
Автор: ZeroCrash
Дата сообщения: 23.04.2009 22:43
01MDM

Спасибо!

И теперь главный вопрос: Как связать несколько батников? Их лучше соединить в один или как? Нужно чтобы после выполнения первого батника запускался другой и т. д.
Пробовал в конце батникоd дописывать start batnik.bat но при запуске получил кучу окон cmd и перегрузку системы(
Автор: 01MDM
Дата сообщения: 24.04.2009 07:38
ZeroCrash
Лучше все поместить в один, но можно и вызывать один из другого. Выложи куда-нибудь все в одном архиве. Переименуй их по порядку запуска, если это важно.
Автор: mouser
Дата сообщения: 24.04.2009 07:39
я вот по такому вопросу что за ошибка и почему в цикле выскочила


: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.
Автор: 01MDM
Дата сообщения: 24.04.2009 07:47
mouser

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

Замени "setlocal disabledelayedexpansion" на "endlocal"
Автор: mouser
Дата сообщения: 24.04.2009 08:18
01MDM

а что эта ошибка означает и почему выпала???
Автор: ZeroCrash
Дата сообщения: 24.04.2009 11:12
01MDM

Попробуй сделать тогда лучше всё один.

Ссылка
Автор: Hiveno
Дата сообщения: 24.04.2009 11:13
Привет всем. Подскажите, пожалуйста, решение.

На сервере по шедулеру периодически раз в сутки запускается батник, вызывает несколько внешних задач. Юзерам позволено запускать этот батник в произвольный момент времени.
Одновременный запуск двух копий задачи допускать нельзя.
Можно решить протсым файлом, кторый создает батник при старте и удаляет при выходе - работает / не работает.
Может зашедулить и разрешить юзерам запускать задачу, а шедулер пусть не допускает повторного запуска - задача и так работает?
Автор: Collapse_Troll
Дата сообщения: 24.04.2009 13:01
Привет ALL!

А вы как-то в батнике удаляете временные файлы? я создаю вот такой cmd и пихаю его в шедулер ночью:


Цитата:
del %TEMP%\*.*. /s


Проблема в том, что некоторые файлы могутт быть заняты, и операция прерывается на первом таком файле. Можно как-то стандартными командами как-то "обойти" этот файл и удалить остальные?
Автор: 01MDM
Дата сообщения: 24.04.2009 13:03
ZeroCrash
Проверь: full.zip

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: как сохранить сетевые настройки


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.