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

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

Автор: Le_Sylvain
Дата сообщения: 12.08.2007 15:01
нужно написать такой bat -файл который запускается на серваке и выполняет следующие функции: 1. Отсылает предупреждение что необходимо выйти из программы, на период обновления (сделано ) 2.если условие не выполнено, то через 2 минуты происходит выгрузка процесса (сделано*) 3. происходит копирование данных в каталоги пользователей (сделано) 4.Необходимо чтобы на том компе на котором произошло обновление отправил средствами Net send сообщение администратору(мне ) что мол обновление произошло без проблем...Как это сделать? по сути надо запустить на компе клиента приложение которое вышлем мне это сообщение .. в админ паке должна быть утилита не помню как называтся которая может запускать на удалееном компе приложение... может быть есть проше вариант...

p.s. * нужно проверить если приложение запущено -выгрузить его, если нет, то тогда продолжать дальше по ходу работы батника....
Автор: 01MDM
Дата сообщения: 12.08.2007 15:03
MsdLamer
Поддерживаются только целые числа
Автор: MsdLamer
Дата сообщения: 12.08.2007 15:09
Хорошо, а не целые можно сложить, или это тупик?
Автор: Elroir
Дата сообщения: 12.08.2007 15:16
MsdLamer
Можно, но если заранее не знать сколько цифр после запятой использутеся - очень сложно. Если ты можешь гарантировать, например, что всегда будут толко сотые доли числа - достаточно просто.
Автор: MsdLamer
Дата сообщения: 12.08.2007 15:17
да только сотые доли это точно.

Добавлено:
и как это будет выглядеть тогда...? Подскажите плиз.
Автор: Elroir
Дата сообщения: 12.08.2007 15:35
MsdLamer

Код:
@echo off
setlocal
for /f %%a in (1.txt) do (
if not defined first set "first=%%a"
set "second=%%a"
)
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"
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%"
)
echo %int_sum%.%fr_sum%>2.txt
Автор: 01MDM
Дата сообщения: 12.08.2007 15:39
MsdLamer
Еще вариант, после точки должно быть два разряда

Код:
@echo off
set a=6655.10
set b=10197.90

for /f "tokens=1,2 delims=." %%i in ('echo %a%') do (
    set int_a=%%i
    set flo_a=%%j
    )
if "%flo_a:~0,1%"=="0" (
    set "flo_a=%flo_a:~1,1%0"
    )

for /f "tokens=1,2 delims=." %%i in ('echo %b%') do (
    set int_b=%%i
    set flo_b=%%j
    )
if "%flo_b:~0,1%"=="0" (
    set "flo_b=%flo_b:~1,1%0"
    )

set /a sumInt=%int_a%+%int_b%
set /a sumFlo=%flo_a%+%flo_b%
if %sumFlo% geq 100 (
    set /a sumInt+=1
    set /a sumFlo-=100
    )

set SUM=%sumInt%.%sumFlo%
echo %SUM%
Автор: Elroir
Дата сообщения: 12.08.2007 15:44
MsdLamer
Исправленный код:

Код:
@echo off
setlocal
for /f %%a in (1.txt) do (
if not defined first set "first=%%a"
set "second=%%a"
)
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"
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%"
)
echo %int_sum%.%fr_sum%>2.txt
Автор: MsdLamer
Дата сообщения: 12.08.2007 15:56
да спасибо работает
Автор: 01MDM
Дата сообщения: 12.08.2007 16:00

Код:
@echo off
setlocal enabledelayedexpansion
set a=325.14
set b=107.88

for /f "tokens=1,2 delims=." %%i in ('echo %a%') do (
    set int_a=%%i
    set flo_a=%%j
    )
if "%flo_a:~0,1%"=="0" (
    set "flo_a=%flo_a:~1,1%0"
    )

for /f "tokens=1,2 delims=." %%i in ('echo %b%') do (
    set int_b=%%i
    set flo_b=%%j
    )
if "%flo_b:~0,1%"=="0" (
    set "flo_b=%flo_b:~1,1%0"
    )

set /a sumInt=%int_a%+%int_b%
set /a sumFlo=%flo_a%+%flo_b%
if %sumFlo% geq 100 (
    set /a sumInt+=1
    set /a sumFlo-=100
    call:setFlo
    )

set SUM=%sumInt%.%sumFlo%
echo %SUM%

:setFlo
set "sumFlo=0%sumFlo%"
Автор: MsdLamer
Дата сообщения: 12.08.2007 17:07

Цитата:
@echo off
setlocal
for /f %%a in (1.txt) do (
if not defined first set "first=%%a"
set "second=%%a"
)
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"
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%"
)
echo %int_sum%.%fr_sum%>2.txt


вот в этом варианте, если допустим в файле больше цифр чем две к примеру:
444.00
555.00
666.00
666.00
и.т.д.
как дописать чтобы он считал все?
Автор: NIKZZZZ
Дата сообщения: 12.08.2007 17:17
MsdLamer

Код: set a=12.3456
set b=56.7
setlocal enabledelayedexpansion
for /f "delims=. tokens=1,2" %%a in ("%a%") do (
if "%%b"=="" (set "a=%%a00") else (set "tmp=%%b00" & set "a=%%a!tmp:~0,2!")
)
for /f "delims=. tokens=1,2" %%a in ("%b%") do (
if "%%b"=="" (set "a=%%a00") else (set "tmp=%%b00" & set "b=%%a!tmp:~0,2!")
)
set /a c=%a% + %b%
set c=%c:~0,-2%.%c:~-2%
echo %c%
Автор: Elroir
Дата сообщения: 12.08.2007 17:23
MsdLamer

Цитата:
как дописать чтобы он считал все?


Код:
@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%"
Автор: MsdLamer
Дата сообщения: 12.08.2007 17:32
Всем спасибо за помощь.
Автор: NIKZZZZ
Дата сообщения: 12.08.2007 17:38
MsdLamer
Умножение:

Код: set a=12.3456
set b=56.7
setlocal enabledelayedexpansion
for /f "delims=. tokens=1,2" %%a in ("%a%") do (
if "%%b"=="" (set "a=%%a00") else (set "tmp=%%b00" & set "a=%%a!tmp:~0,2!")
)
for /f "delims=. tokens=1,2" %%a in ("%b%") do (
if "%%b"=="" (set "a=%%a00") else (set "tmp=%%b00" & set "b=%%a!tmp:~0,2!")
)
set /a c=%a% * %b%
set c=%c:~0,-4%.%c:~-4%
echo %c%
Автор: dSasha
Дата сообщения: 12.08.2007 19:40
Я уже пытался задать вопрос, но его проигнорировали, к сожалению. Задача была - автоматически добавить несколько маршрутов после дозвона до провайдера.
Цитата:
Источник: RemoteAccess
Код (ID): 20158
Я нашел команду создания триггера событий и создал триггер события с кодом 20158:
Код: EVENTTRIGGERS /Create /EID 20158 /RU <пользователь> /RP <пароль> /TK route.bat
Автор: KapralBel
Дата сообщения: 12.08.2007 20:13
dSasha
По RASDial - анализируй какие соединения активны и в зваисимости от этого выполняй подчиненные батники
Автор: dSasha
Дата сообщения: 12.08.2007 20:43
KapralBel
Какие активны и по ipconfig видно. Хотелось бы выбрать именно то, активность которого только что изменилась. Это трудно?
Автор: KapralBel
Дата сообщения: 12.08.2007 21:07
dSasha
К сожалению ЕТ - не различает по комментарию
А так надо проверять Журнал событий и смотреть описание
Может найдешь утилиту которая это может делать
или если установлен powerShell - то анализировать там
Автор: dSasha
Дата сообщения: 12.08.2007 21:55
Ну что ж, спасибо. В принципе, и так работает. А разбираться в powerShell не разобравшись в стандартных командах - не ст0ит. Просто хотелось сделать ещё проще, ну да ладно.
Автор: KapralBel
Дата сообщения: 12.08.2007 22:18
dSasha
Взглянь в сторону EventQuery.vbs
или с PowerShell я смогу помочь
У меня уже разработан скрипт по анализу записей в журнале событий
Можно его доработать
Автор: dSasha
Дата сообщения: 13.08.2007 01:42
С этим другая трабла
Цитата:
C:\Documents and Settings\1>EventQuery.vbs
Сервер сценариев Windows (Microsoft ®) версия 5.6
© Корпорация Майкрософт (Microsoft Corp.), 1996-2001. Все права защищены.
CScript.exe - Ошибка приложения
Инструкция по адресу "0х5с957890" обратилась к памяти по адресу "0x00000008". Память не может быть "read"
И так постоянно. С WScript.exe аналогично.
Автор: NIKZZZZ
Дата сообщения: 13.08.2007 04:25
dSasha

Цитата:
Хотелось бы выбрать именно то, активность которого только что изменилась. Это трудно?


Создаешь файл текущей активности.
Ipconfig >conf.txt или как-либо еще.

При срабатывании тригера создаешь новый файл
Ipconfig >confnew.txt
Сравниваешь
Fc conf.txt confnew.txt
На основе результатов выполняешь необходимые действия
Обновляешь
Type confnew.txt conf.txt



Автор: dardreams
Дата сообщения: 13.08.2007 06:07
ПРивет !
Вопросам простой
хочу записать в перемнную значение что то типа вот так
ПРимер:


Код: net view|find "admin"
Автор: Maza Faka
Дата сообщения: 13.08.2007 06:32
dardreams

Код:
@echo off
for /f %%a in ('net view ^| find "admin"') do set x=%%a
Автор: dardreams
Дата сообщения: 13.08.2007 06:41
Maza Faka
Что то он у меня не работает .
А можно это не в батнике а прямо в консоле

Добавлено:
Maza Faka
Извени, это я косячник.
Слушай я на прошлой неделе задавал вопрос, как можно читать русский текст из файла, вот просто создаешь файл текстовый пишешь там любой текст вот такой код

Код:
@echo off


setlocal enabledelayedexpansion
for /f "tokens=*" %%a in (temp.txt) do (
set "count=0"
set "text=%%a"
call :show)

goto :EOF
:show
if "!text:~%count%,1!"=="" (Echo. &set /a x=%x%+1&goto :EOF)

set word=!text:~%count%,1!


hs_Echo !text:~%count%,1!
::::::::::::::::::::::::::::::::echo !text:~%count%,1! так тоже не работет !


set /a "count+=1"

goto show


Автор: KapralBel
Дата сообщения: 13.08.2007 07:27
dardreams

Цитата:
Нет текст именно в ANSI и я же говорю что даже стандртный ECHO не работает

То что ты мне прислал действительно в ANSI но код

Код: echo off
chcp 1251>nul
setlocal enabledelayedexpansion
for /f "tokens=*" %%a in (temp.txt) do (
set "count=0"
set "text=%%a"
call :show)

goto :EOF

:show
if "!text:~%count%,1!"=="" (Echo. &set /a x=%x%+1&goto :EOF)

hs_echo "!text:~%count%,1!"

set /a "count+=1"

goto show
Автор: dardreams
Дата сообщения: 13.08.2007 07:37
KapralBel
нет, русский текст выводится нормально если его прямо в bat файле писать .

Добавлено:
KapralBel
Можешь выслать на мою почту
МойНик@mail(точка)ru
2 файл, готовый бат и текстовый.
Автор: KapralBel
Дата сообщения: 13.08.2007 08:45
dardreams
Отослал
У меня все работает

Бат без изменений то что в моем предыдущем посте (и то что ты постил сам, страницы 3-4 назад)

Добавлено:
Твой Майл.Ру заявил что мое письмо СПАМ
http://rapidshare.com/files/48665929/BatFile.zip.html
Автор: dardreams
Дата сообщения: 13.08.2007 09:50

Вот такое он выдает !

Добавлено:

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

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


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