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

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

Автор: Elroir
Дата сообщения: 26.11.2007 20:05
xKLx

Код:
@echo off
echo Viberite server

set /p serv=(1) Da6avitb (2) 3amenitb ??
if "%serv%"=="1" set "action=>>"
if "%serv%"=="2" set "action=>"

set /p server=(1) ----- (2) ------ {3} ------ {4} ----- (0) quit?
if /i %server%==1 goto 1
if /i %server%==2 goto 2
if /i %server%==3 goto 3
if /i %server%==4 goto 4
if /i %server%==0 goto end

:1
echo 1127.0.0.1 localhost %action% C:\hosts
echo 189.207.221.204 l2testauthd.lineage2.com>> C:\hosts
echo 189.207.221.204 l2authd.lineage2.com>> C:\hosts
echo 189.207.221.204 nprotect.lineage2.com>> C:\hosts
pause
exit

pause
exit

:2
echo 2127.0.0.1 localhost %action% C:\hosts
echo 289.207.221.204 l2testauthd.lineage2.com>> C:\hosts
echo 289.207.221.204 l2authd.lineage2.com>> C:\hosts
echo 289.207.221.204 nprotect.lineage2.com>> C:\hosts
pause
exit

:3
echo 3127.0.0.1 localhost %action% C:\hosts
echo 389.207.221.204 l2testauthd.lineage2.com>> C:\hosts
echo 389.207.221.204 l2authd.lineage2.com>> C:\hosts
echo 389.207.221.204 nprotect.lineage2.com>> C:\hosts
pause
exit

:4
echo 127.0.0.1 vip.tt2xz.com %action% C:\hosts
echo 127.0.0.1 vip1.tt2xz.com>> C:\hosts
echo 127.0.0.1 vip2.tt2xz.com>> C:\hosts
echo 127.0.0.1 vip3.tt2xz.com>> C:\hosts
echo 127.0.0.1 vip4.tt2xz.com>> C:\hosts
echo 127.0.0.1 vip5.tt2xz.com>> C:\hosts
echo 127.0.0.1 vip6.tt2xz.com>> C:\hosts
echo 127.0.0.1 vip7.tt2xz.com>> C:\hosts
echo 127.0.0.1 VIP1.TOWALKER.COM>> C:\hosts
echo 127.0.0.1 VIP2.TOWALKER.COM>> C:\hosts
echo 127.0.0.1 VIP3.TOWALKER.COM>> C:\hosts

pause
exit
Автор: xKLx
Дата сообщения: 26.11.2007 20:23
Elroir
как раз то что надо спс

прикольно ещё будет если будут надписи по русски вот только непомню как это сделать давненько это было
Автор: 01MDM
Дата сообщения: 26.11.2007 22:29
xKLx
Я думал что тебе больше ничего не надо.

Цитата:

прикольно ещё будет если будут надписи по русски вот только непомню как это сделать давненько это было

Просто сохраняй в dos-кодировке (cp866) или

Код:
@echo off
chcp 1251 >nul

.....
.....

Автор: xKLx
Дата сообщения: 26.11.2007 23:42
01MDM
Всё разобрался оказывается у меня шрифт в консоле стоял точечный а в нем нету русского
Автор: abasov
Дата сообщения: 27.11.2007 08:57
Помогите пожалуйста. Не переходит на следущий том, зацикливается на первом, если убрать -severy:3 - работает, но нужен таймаут.

Код:
rar a -y -v500k -m5 -r -rr -s -df c:\test\example c:\test\*.mp3
sleep 2
for %%x in ("c:\test\*.*") do postie -severy:3 -host:first -v -to:nekto@gmail.com -from:from@test.ru -s:"%%x" -nomsg -a:"%%x"


Автор: SapSat
Дата сообщения: 27.11.2007 12:12
Подскажите, плз, как реализовать батник для перевода градусов цельсия в фаренгейты и обратно.
Надо:
- после запуска батника - выскакивал запрос :: введите температуру :
- ввод должен быть типа 22C или 77F
- по последней введенной букве определялось - в какую сторону конвертить
- на выходе сообщение типа: 77F = 25.00C
- чтобы выводились cотые доли градуса

Я пока застрял на:

@echo off
setlocal ENABLEEXTENSIONS
set /p DFar=Enter Fahrenheit's Degree :
set /a DCel=(%DFar%-32)*500/9
Echo %DFar% F = %DCel:~0,2%.%DCel:~2,3% C

но этот код правильно работает только для F > 50

:-(


Добавлено:

в продолжение конвертера температур F <==> C

Как делать кроп (вырезку) не слева, а справа (с конца ввода) -то есть, если я запущу:

set /p td=Enter Temperature :
echo %td:~0,1%

и введу 55F

то чтобы вывод был не 5, а F

то есть количество введенных знаков не известно (2,3,4)???
Автор: William Gates
Дата сообщения: 27.11.2007 12:57
Maza Faka
Robocopy не совсем подходит. Устанавливать дополнительный софт для решения такой задачи не совсем целесообразно. Может все-таки можно сделать это с помощью bat-файла, изящно и кратко. Краткость - СТ.
Автор: SapSat
Дата сообщения: 27.11.2007 13:21
в продолжение темы конвертера температур F <==> C

ну хорошо, если никто не знает, как делать crop начиная справа (с конца введенной строки), то может кто-нибудь знает, как определить длину введенной строки?

?
Автор: Tipulatoid
Дата сообщения: 27.11.2007 13:37
SapSat
Подскажи математические формулы перевода температуры туда и обратно
Автор: SapSat
Дата сообщения: 27.11.2007 13:43
Формула для перевода температур - была зашита в первом примере:
Сel=(Far-32)*5/9
.
Сейчас последняя у меня версия имеет вид:

@echo off
setlocal ENABLEEXTENSIONS

set /p td=Enter Temperature :
if %td:~-1%==F goto :FAR
if %td:~-1%==C goto :CEL
goto :EOF

:FAR
set /a DFar=%td:~-3,2%
set /a DCel=(%DFar%-32)*500/9
Echo %DFar% F = %DCel:~0,2%.%DCel:~2,3% C
goto :EOF

:CEL
echo CEL
goto :EOF

Пока упираюсь в вопрос - как определить длину строки (переменной)?

?
Автор: wolf0425
Дата сообщения: 27.11.2007 13:50
SapSat

@echo off
set /p DFar=Enter Fahrenheit's Degree :
set /a DCel=( %DFar% - 32 ) * 500 / 9
Echo %DFar% F = %DCel:~0,-2%.%DCel:~-2% C (%DCel%)

Проделать set /? и прочитать, перед тем как писать - мог бы и сам.
А вот быстро определить длину строки - способа нет, в отличие от отсчета символов с конца.

Автор: Elroir
Дата сообщения: 27.11.2007 13:51
SapSat
Crop справа:

Код:
set "temp=55F"
set "scale=%temp:~-1%"
Автор: wolf0425
Дата сообщения: 27.11.2007 13:55

Цитата:
CMD не поддерживает дроби - соответственно, этот код не может правильно работать.
ты код то посмотрел бы сначала. он и считает сразу в сотых, без дробей...

исходный код ещё и при температуре больше 212F врал

мой (см. выше) наверно должен врать при результате в диапазоне +- .09С, чего при целочисленном входном значении фаренгейтов не бывает. (32F=0С обсчитывается нормально)
Автор: Elroir
Дата сообщения: 27.11.2007 14:00
wolf0425

Цитата:
ты код то посмотрел бы сначала. он и считает сразу в сотых, без дробей...

Действительно - невнимательно смотрел.
Автор: SapSat
Дата сообщения: 27.11.2007 14:55
Спасибо всем ответившим.
crop справа я давно нашел сам (см мой пример на предыдущей странице).

Сейчас я уперся в ошибку при вводе значения менее 10С (или 10F)

код:


@echo off
setlocal ENABLEEXTENSIONS

:START
set /p td=Enter Temperature :
if %td:~-1%==F goto :FAR
if %td:~-1%==C goto :CEL
echo Correct input format is: 25C or 75F
goto :START

:FAR
set /a DFar=%td:~-3,2%
set /a DCel=(%DFar%-32)*500/9
Echo %DFar% F = %DCel:~0,-2%.%DCel:~-2% C
goto :EOF

:CEL
set /a DCel=%td:~-3,2%
set /a DFar=%DCel%*900/5+3200
Echo %DCel% C = %DFar:~0,-2%.%DFar:~-2% F
goto :EOF



Кстати - та же ошибка и при вводе значения больше 99С или 99F ...

где ошибка и как ее поправить?

Спасибо.
.

ВсЁ!!! Всем спасибо - нашел сам!!!

Правильный код:

@echo off
setlocal ENABLEEXTENSIONS

:START
set /p td=Enter Temperature :
if %td:~-1%==F goto :FAR
if %td:~-1%==C goto :CEL
if %td:~-1%==E goto :EOF
echo Correct input format is: 25C or 75F or E for Exit
goto :START

:FAR
set /a DFar=%td:~0,-1%
set /a DCel=(%DFar%-32)*500/9
Echo %DFar% F = %DCel:~0,-2%.%DCel:~-2% C
goto :START

:CEL
set /a DCel=%td:~0,-1%
set /a DFar=%DCel%*900/5+3200
Echo %DCel% C = %DFar:~0,-2%.%DFar:~-2% F
goto :START


Добавлено:
============================

НОВАЯ ЗАДАЧКА:

в коде:

set /p new=%str:~-2%

как здесь вместо цифры 2 подставить переменную
- у меня что-то с ходу не получается...

то есть - почему:

set /a %l=3
echo %str:~-3%
echo %str:~-^%l%

первый crop работает, а второй (с переменной) - нет ?

?
Автор: king_stiven
Дата сообщения: 27.11.2007 18:44
SapSat

setlocal enabledelayedexpansion
set l=2
set h=245678
echo !h:~-%l%!>1.txt
Автор: avovtchak
Дата сообщения: 28.11.2007 02:17
Под windows xp используется чековый термопринтер. Причем используется двумя различными программами поочередно. Принтер подключен к COM2. Одна из программ требует установленного драйвера Generic/Text only, а вторая работает непосредственно с портом, и отказывается печатать, если драйвер Generic/Text only установлен.
Сейчас выхожу из этой ситуации двумя путями:
когда необходимо пользоваться программой_2, сношу драйвер, тем самым освобождая порт, либо меняю в свойствах принтера порт на какой либо неиспользуемый. Затем, когда необходимо воспользоваться программой_1 произвожу обратные действия.

Как бы это дело автоматизировать при помощи батников?
Автор: SapSat
Дата сообщения: 28.11.2007 08:07
king_stiven :

приведенный пример:
setlocal enabledelayedexpansion
set l=2
set h=245678
echo !h:~-%l%!>1.txt

НЕ РАБОТАЕТ!

в 1.txt:
h:~-2

????

Разобрался - все работает, просто пробелы в конце строки.

Спасибо!
!
Автор: 01MDM
Дата сообщения: 28.11.2007 08:25
SapSat

Код:
set ddd=123456
set ss=2
echo | echo %%ddd:~-%ss%%%
Автор: SapSat
Дата сообщения: 28.11.2007 08:28
01MDM -

Тоже работает, спасибо!

!

Добавлено:

wolf0425 :
"А вот быстро определить длину строки - способа нет..."

написал батник для ОПРЕДЕЛЕНИЯ ДЛИНЫ строки или переменной:

@echo off
setlocal enabledelayedexpansion
set /p str=Enter string :
set /a l=0

:START
set /a %l+=1
IF %str% NEQ !str:~-%l%! goto:START
echo String Length = %l%

(не забывайде удалять пробелы в конце строк при копировании кода...
надо будет, видимо, написать батник, который будет
во всех батниках в папке удалять пробелы в конце строк...)

!
Автор: wolf0425
Дата сообщения: 28.11.2007 10:42
SapSat

Цитата:
wolf0425 :
"А вот быстро определить длину строки - способа нет..."
написал батник для ОПРЕДЕЛЕНИЯ ДЛИНЫ строки или переменной:
ключевое слово было быстро, а строки бывают и длииинные...
Автор: SapSat
Дата сообщения: 28.11.2007 14:16
Кстати - вопрос на засыпку -

почему этот батник по подсчету длины строки:
- корректно работает только с буквами
- длину цифровой строки правильно считает только до 10
- спотыкается на пробелах

???
Автор: 01MDM
Дата сообщения: 28.11.2007 14:58
SapSat
В общем вопрос со "спецсимволами" конечно интересный и до сих пор не решен

Код:
@echo off
setlocal enabledelayedexpansion
set "line=qwerty йцукен < >> @ " " %% % ! ? && =="
set count=0
:next
call:print
set /a count+=1
if not "!line:~%count%,1!"=="" goto:next
goto:eof
:print
echo "!line:~%count%,1!" %count%

зы. слегка подправил
Автор: SapSat
Дата сообщения: 28.11.2007 16:40

01MDM

считает ДЛИНУ СТРОКИ - включая все знаки - и восклицательные, и удвоенные проценты:


@echo off
setlocal enabledelayedexpansion
set /p s=Enter string :
set l=0
:next
set /a l+=1
if "!s:~%l%,1!" NEQ "" goto:next
echo String Lenght = %l%
Автор: NIKZZZZ
Дата сообщения: 28.11.2007 17:33
SapSat

Цитата:
считает ДЛИНУ СТРОКИ

Если строка пустая выдаст 1.

Вариант без setlocal enabledelayedexpansion

Код: @echo off
set /p s=Enter string :
set l=0
set temp=%s%
:next
if "%temp%" == "" goto _1
set /a l+=1
set temp=%temp:~0,-1%
goto next
:_1
echo String Lenght = %l%
Автор: 01MDM
Дата сообщения: 28.11.2007 17:58
SapSat
Считать то он считает (правильно если set /p), но как вывести каждый знак?

Код:
@echo off
setlocal enabledelayedexpansion
set "s=qwerty %% % ! << ="
set l=0
:next

echo !s:~%l%,1!

set /a l+=1
if "!s:~%l%,1!" NEQ "" goto:next
echo String Lenght = %l%
Автор: SapSat
Дата сообщения: 29.11.2007 08:36
NIKZZZZ

этот код (Вариант без setlocal enabledelayedexpansion ) -
спотыкается на первом же спец-символе, например -
если ввести <>
то выдает
> was unexpected...

Так что - вариант не проходит.
Уж лучше так:

@echo off
setlocal enabledelayedexpansion
set /p s=Enter string :
set l=0
if "!s!"=="" goto end
:next
set /a l+=1
if "!s:~%l%,1!" NEQ "" goto next
:end
echo String Lenght = %l%


Этот вариант СЧИТАЕТ длину всего чего угодно - от пустой строки, до длины строки типа:
~!@#$%^&*()_+=-б,./?><\|

.

Добавлено:

01MDM

Цитата:
Как решить:


Да, прикольно -
если я использую код

setlocal enabledelayedexpansion
set /p line=Enter string :
echo !line!

и ввожу два символа !%
то все работает нормально.

a если захардкодить значение переменной line - типа:

setlocal enabledelayedexpansion
set /p line=!%
echo !line!

то выдает ошибку...
Автор: 01MDM
Дата сообщения: 29.11.2007 09:07
SapSat
Посчитать не трудно, как это сделать корректно? Ты же не будешь постоянно вводить данные через set /p, а по другому возникают ошибки..

SapSat Мне кажется, что это вообще не решаемо.

Автор: primet
Дата сообщения: 29.11.2007 10:06
Доброго времени суток.
Помогите пожалуйста решить проблему.
Есть каталог с файлами, каждый файл отличается от последующего временем создания ровно на 1 день, и каждый день в папке появляется еще один файл от текущего дня.
необходимо оставлять файлы только за месяц, а более старые файлы тереть.
т.е. нужен батник проверяющий время создания файлов и удаляющий файлы если они старше , 30 дней.
Заранее спасибо.
Автор: 01MDM
Дата сообщения: 29.11.2007 10:12
primet
Посмотри на 44 странице

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869

Предыдущая тема: Доступ к реестру через RegEdit?


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