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

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

Автор: Serge2005
Дата сообщения: 15.02.2006 12:18
jak_forest
Спасибо! Буду изучать))
KapralBel
Спасибо, приму на заметку...
Автор: KapralBel
Дата сообщения: 15.02.2006 12:41
olegupb

Цитата:
If %isCopy% == 1 Echo. %Str% >>Anek_Result.txt

Если посли Эхо сразу стоит точка -то должно ставить пробелы
Удаляю точку - все без пробелов

Добавлено:
olegupb
Кавычки замени на одинарные
Автор: olegupb
Дата сообщения: 15.02.2006 12:54
KapralBel

Цитата:
Если посли Эхо сразу стоит точка -то должно ставить пробелы

Если так, то в выходном файле каждая строка начинается с пробела

Цитата:
Удаляю точку - все без пробелов

каждая строка начинается без пробела

Нет пробелов между анекдотами

Цитата:
Кавычки замени на одинарные

С кавычками решено
Автор: KapralBel
Дата сообщения: 15.02.2006 12:59
olegupb
Каждая строка начинается с пробела - для анекдотов?
Это очень страшно?
Автор: olegupb
Дата сообщения: 15.02.2006 13:09
KapralBel

Цитата:
Каждая строка начинается с пробела - для анекдотов?
Это очень страшно?

"Да нет это совсем не страшно, я просто привел пример как у меня отрабатывает
Цитата:
Цитата:If %isCopy% == 1 Echo. %Str% >>Anek_Result.txt

Если посли Эхо сразу стоит точка -то должно ставить пробелы
Удаляю точку - все без пробелов
"

В выходном файле отсутствуют пустые строки между анекдотами, что приводит к их слипанию в один большой
Вот это немного так сказать неудобно.
Автор: z83
Дата сообщения: 15.02.2006 17:28
Есть переменная, введенная пользователем с экрана.
Например "12345678901234567890" (всего 20 цифр).
Нужно сложить все цифры кроме №13. и прибавить к получившейся сумме заднное число например "14". Затем от полученного результата взять первую цифру справа и поставить её вместо цифры №13.
В данном случае сумма у нас 87 прибавляем 14 = 101. Берём правую цифру от "101" т.е. "1" заменяем ею № 13. Результат получается такой "12345678901214567890".
И в конце результат выводится на экран.

Подскажите как сделать это на батнике?

И ещё вопрос как сравнить два числа в батнике. К примеру если 10+переменная*2 > 0 то делай то-то, если нет то делай ещё что-то.
Автор: KapralBel
Дата сообщения: 15.02.2006 17:45
z83

Код:
@Echo Off
Set /P ch="Число>"
Set chDop=14
Set ch01=%Ch:~0,1%
Set ch02=%Ch:~1,1%
Set ch03=%Ch:~2,1%
Set ch04=%Ch:~3,1%
Set ch05=%Ch:~4,1%
Set ch06=%Ch:~5,1%
Set ch07=%Ch:~6,1%
Set ch08=%Ch:~7,1%
Set ch09=%Ch:~8,1%
Set ch10=%Ch:~9,1%
Set ch11=%Ch:~10,1%
Set ch12=%Ch:~11,1%
Set ch13=%Ch:~12,1%
Set ch14=%Ch:~13,1%
Set ch15=%Ch:~14,1%
Set ch16=%Ch:~15,1%
Set ch17=%Ch:~16,1%
Set ch18=%Ch:~17,1%
Set ch19=%Ch:~18,1%
Set ch20=%Ch:~19,1%

Set /a chSumm=%ch01%+%Ch02%+%Ch03%+%Ch04%+%Ch05%+%Ch06%+%Ch07%+%Ch08%+%Ch09%+%Ch10%
Set /a chSumm=%chSumm%+%ch11%+%Ch12%+%Ch14%+%Ch15%+%Ch16%+%Ch17%+%Ch18%+%Ch19%+%Ch20%
Set /a chSumm=%chSumm%+%chDop%
Set chLast=%ChSumm:~-1%
Set chNew=%ch01%%ch02%%ch03%%ch04%%ch05%%ch06%%ch07%%ch08%%ch09%%ch10%
Set chNew=%chNew%%ch11%%ch12%%chLast%%ch14%%ch15%%ch16%%ch17%%ch18%%ch19%%ch20%

Echo New chislo:%chNew%
Автор: olegupb
Дата сообщения: 15.02.2006 18:13
KapralBel

Цитата:
В выходном файле отсутствуют пустые строки между анекдотами

Перед батником закинул в Word и двумякликами заменил пустые места разделителем типа "------------------------------------------" и все красиво получилось.
Выходной файл 350 страниц с анекдотами!
Спасибо, за помощь!
Автор: z83
Дата сообщения: 15.02.2006 21:44
KapralBel
Спасибо, мне это очень помогло. А то делать всё через эксель, и каждый раз вручную переписывать туда сюда, по одной цифорке просто ужасно.
Автор: KapralBel
Дата сообщения: 16.02.2006 09:35
olegupb
Поправленная версия - путые строки заменяет на "---------------------", и нге вставляет пробел в начале каждой строки

Код:
@Echo Off
Set begin=Лучшие 13 анекдотов
Set end=Подписать друга на
ChCp 1251
Set isCopy=0
For /f "delims= skip=5" %%a In ('Type *.ane') Do Call :_P %%a
ChCp 866
GoTo :EOF

:_P
Set Str=%*
Set tmpBeg=%Str:~0,19%
Set tmpEnd=%Str:~0,18%
If /i "%tmpEnd%"=="%end%" Set isCopy=0
If "%Str%"=="" Set Str=------------------------
If %isCopy% == 1 Echo %Str% >>Anek_Result.txt
If /i "%tmpBeg%"=="%begin%" Set isCopy=1
GoTo :EOF
Автор: 01MDM
Дата сообщения: 16.02.2006 21:58
Win-98
У команды SET отсутствует параметр /a. Как записать в переменную результат арифметического действия?
Автор: KapralBel
Дата сообщения: 17.02.2006 09:22
01MDM
1. перейти на XP
2. Написать самому программу в которую передаешь строку вида "2+4*6", а она возвращает 26
3. Смотри в сторону VBS/JS/Perl и т.д.
Автор: hacsoft
Дата сообщения: 17.02.2006 09:23
01MDM
Можно воспользоваться сторонними утилитами, которые подсчитают результат и вернут его через errorlevel.
Автор: 01MDM
Дата сообщения: 18.02.2006 18:57
Посмотрел в сторону JScript. С другим программированием к сожалению не знаком.
XP отпадает из-за слабости железа. Линукс можно поставить, но никто его не оценит.
Автор: volodyalipkin
Дата сообщения: 19.02.2006 19:04
01MDM
Ставим 4NT или 4Dos компании JPSoft и всё будет хорошо.
Автор: komper
Дата сообщения: 20.02.2006 18:54
Уже два дня мучаюсь помогите

Задача такая.

Пингуем 10.25.254.254
Если пингуется, пингуем второй адрес, если не пингуется то выводим сообщение на экран и проигрываем какой нить звук и отправляем сообщение по net send на другой комп в сети
Если пингуется второй адрес то ждем минуту и возвращаемся на начало если не пингуется то тоже отправляем сообщение и проигрываем звук

Как это реализовать?
Автор: KapralBel
Дата сообщения: 21.02.2006 09:35
komper
не совсем понятное условие

Цитата:
если не пингуется то тоже отправляем сообщение и проигрываем звук
- какой адрес не пингуется? Первый или второй?

Код:
@Echo Off
:Begin
Ping 192.168.0.1
GoTo :_Ping1_%ErrorLevel%
GoTo :EOF

:_Ping1_0
Echo 1-st IP ping - Yes
Ping 192.168.0.1
GoTo :_Ping2_%ErrorLevel%
GoTo :EOF

:_Ping1_1
Echo 1-st IP ping - No
GoTo :EOF

:_Ping2_0
Echo 2-st IP ping - Yes
Set t0=%Time%
Set t1=%t0:~3,2%
:Loop1
Set t2=%Time:~3,2%
If %t1% == %t2% GoTo :Loop1
GoTo :Begin
GoTo :EOF

:_Ping2_1
Echo 2-st IP ping - No
Echo Проиграть звук
Net Send Comp111 Второй адрес не пингуется
GoTo :EOF
Автор: 01MDM
Дата сообщения: 21.02.2006 09:45
volodyalipkin


Цитата:
Ставим 4NT или 4Dos компании JPSoft и всё будет хорошо.


4NT sells for $74.95 (plus shipping) for a single copy. We also offer the JP Software CD Suite which includes both 4NT and Take Command for only $99.95.

По моему чересчур, на машину которая находится на работе. Поставил пакет портированных из-под линя программ Wbin. Там в принципе есть всё для "щастья". Только некорректно отображает кодировочку.
Автор: komper
Дата сообщения: 21.02.2006 11:03

Цитата:
komper
не совсем понятное условие

Цитата:
если не пингуется то тоже отправляем сообщение и проигрываем звук
- какой адрес не пингуется? Первый или второй?

Код:

@Echo Off
:Begin
Ping 192.168.0.1
GoTo :_Ping1_%ErrorLevel%
GoTo :EOF

:_Ping1_0
Echo 1-st IP ping - Yes
Ping 192.168.0.1
GoTo :_Ping2_%ErrorLevel%
GoTo :EOF

:_Ping1_1
Echo 1-st IP ping - No
GoTo :EOF

:_Ping2_0
Echo 2-st IP ping - Yes
Set t0=%Time%
Set t1=%t0:~3,2%
:Loop1
Set t2=%Time:~3,2%
If %t1% == %t2% GoTo :Loop1
GoTo :Begin
GoTo :EOF

:_Ping2_1
Echo 2-st IP ping - No
Echo Проиграть звук
Net Send Comp111 Второй адрес не пингуется
GoTo :EOF


Я работаю в интернет клубе!
У компании которая нам предоставляет услуги интернета, бывает много проблем.
1-я проблема у них часто падает шлюз с которого мы подключены.
2-я не работает vpn server
3-я не работает dns server
Если одно работает то другое не работает...
Я не могу постоянно сидеть в клубе и проверять работоспособность...
Мне нужно было уведомлять работника клуба в том что не работает интернет чтоб он выполнил какие либо действия в соответствии с указанными мною ранее...
Ну например, если не работает шлюз позвонить в офис компании и узнать в чем причина...
а если не работает днс то выполнить какие то действия...
Вот я и написал что получилось.... и еще как это можно упростить


Код: echo off
:gw
color
ping 10.25.254.254
if not errorlevel 0 goto rline else goto gwmsg

:gwmsg
color 47
echo Ne pinguetsya shlyuz 10.25.254.254.
echo Zadachi:Proverit' estli svet na 31 dome
echo Proverit' ne povrejden-li kabel'
echo Pozvonit' Shamilyu na nomer +7960*******
echo Po bistree delayi a to budut vozmusheniya ot klientov
timeout /t 10
color
start /b C:\ping\hs_beep.exe E
net send 10.25.1.5 Pozvoni Shamilyu po nomeru +7960******* Internet ne rabotaet!!! SROCHNO!!!!
timeout /t 60
goto gw

:rline
color
ping 10.10.1.2
if not errorlevel 0 goto internet else goto rlinemsg

:rlinemsg
color 47
echo Ne pinguetsya server r-line
net send 10.25.1.5 Ne pinguetsya server r-line
start /b hs_beep.exe E
timeout /t 20
goto gw
color

:internet
ping 81.176.20.5
if not errorlevel 0 goto dns else goto internetmsg
:internetmsg
color 47
echo Internet ne podklyuchaetsya, nujno proveri' balans
net send 10.25.1.5 Internet ne podklyuchaetsya, nujno proveri' balans
start /b hs_beep.exe E
timeout /t 20
goto gw

ns
ping www.ya.ru
if not errorlevel 0 goto end else goto dnsmsg
nsmsg
echo Не работает днс сервер, возможно поможет перезагрузка компьютера!

:end
color 27
echo Проверка выполнена успешно! Радуйтесь интернет у вас работает!.
timeout 180
goto gw
Автор: KapralBel
Дата сообщения: 21.02.2006 11:55
komper
Если работает правильно - не лезь
Автор: volodyalipkin
Дата сообщения: 21.02.2006 19:08
01MDM

Цитата:
4NT sells for $74.95

4DOS - free.
Автор: vastni
Дата сообщения: 22.02.2006 12:49
имеется файл, внутри которого на каждую строчку приходится какое-то число.. необходимо просуммировать все числа и выдать на экран.. как это можно сделать?
Автор: KapralBel
Дата сообщения: 22.02.2006 13:15
vastni

Код:
@Echo Off
Set Summ=0
For /f %%a in (text.txt) Do Call :_Sum %%a
Echo Summa=%Summ%
GoTo :EOF

:_Sum
Set /a Summ=%Summ%+%1
GoTo :EOF
Автор: vastni
Дата сообщения: 22.02.2006 15:16
KapralBel

а если будет несколько файлов, и надо будет все обработать по этому алгоритму, то возникнут проблемы, да? насколько у меня получалось, это надо будет создавать еще один цикл, внутри которого не будет возможности отобразить результат для каждого из файлов..
Автор: KapralBel
Дата сообщения: 22.02.2006 15:25
vastni
Тебе надо давать сумму по каждому файлу или по всем?

Добавлено:

Код:
@Echo Off
Set SummTotal=0
Set Summ=0
For %%a in (*.txt) Do Call :_SumFile %%a
Echo SummTotal=%SummTotal%
GoTo :EOF

:_SumFile
Set Summ=0
For /f %%a in (%1) Do Call :_Sum %%a
Echo Summa in '%1'=%Summ%
Set /a SummTotal=%SummTotal%+%Summ%
GoTo :EOF

:_Sum
Set /a Summ=%Summ%+%1
GoTo :EOF
Автор: Lier
Дата сообщения: 26.02.2006 09:00
А есть ли возможность с помощью батника отключить мышь и клавиатуру, а потом их включить ? Например, чтобы пока идет архивация пользователь не мог закрыть окошко батника.
Автор: ivolc
Дата сообщения: 26.02.2006 16:17
Как в пакетном режимев начале каждой строки каждого файла поставить имя этого файла? Должно быть как-то просто... Туплю. Help please!
Автор: nightlight
Дата сообщения: 27.02.2006 02:01
ivolc
Где то так...

cmd файл:

@ECHO OFF
SET filename=%1
IF EXIST tmp.txt DEL /Q tmp.txt
FOR /F "tokens=*" %%I IN (%filename%) DO ECHO %filename% %%I >>tmp.txt
MOVE /Y tmp.txt %filename%

и выполнить его в цикле FOR для желаемых файлов...

Автор: Nervniy2000
Дата сообщения: 27.02.2006 13:25
А можно ли батником включить копирование из C:\Documents and Settings\DadyaVasya\*.* в C:\Documents and Settings\Default User\
а то задолбался уже вручную лазать..
Автор: KapralBel
Дата сообщения: 27.02.2006 14:25
Nervniy2000
Что именно тебе надо копировать?

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Вернуть библиотеку АТМ (поддержка шрифтов Type 1)


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