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

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

Автор: 01MDM
Дата сообщения: 21.09.2010 22:00
Free_Soft

Код:
С:\>11.cmd "win par"
win par
Автор: bomzzz
Дата сообщения: 21.09.2010 22:02
передается? у меня чета нет
echo %~1
1 2 3 4 5 6 7 8 9 0
только 1 передается

Добавлено:
ага - с кавычками передается

Добавлено:
"1 2 3 4 5 6 7 8 9"
Автор: Free_Soft
Дата сообщения: 21.09.2010 22:20
01MDM
bomzzz
вот где собака порылась:

Код: @echo off
set par=%~1
set par=%par:/=%
echo %par%
if /i "%par%" == "win rear" goto:1
:1
echo Windows rearm
Автор: bomzzz
Дата сообщения: 21.09.2010 22:41
:/= - вот это убери
Автор: Free_Soft
Дата сообщения: 21.09.2010 22:45
bomzzz

Цитата:
:/= - вот это убери

да, без него срабатывает. Но параметр нужен. Есть мысли?
Автор: bomzzz
Дата сообщения: 21.09.2010 22:46

Цитата:
@echo off
set par=%~1
set par=%par%
echo %par%
if /i "%par%"=="win rear" goto:1
goto :2
:1
echo Windows rearm
:2
pause

Автор: smirnvlad
Дата сообщения: 21.09.2010 23:44
Free_Soft

Цитата:
Но параметр нужен. Есть мысли?



Код:
@echo off
set "par=%1"
set "par=%par:/=%"
echo %par%
if /i %par%=="win rear" goto:1
goto :2
:1
echo Windows rearm
:2
pause
Автор: Mark_Titov
Дата сообщения: 22.09.2010 08:32
Доброго дня всем...

Подскажите пож-ста можно ли в батнике задать заранее определенные команды для автоматического выполнение в теле батника?..
На пример -


Код: @echo off
call telnet
open 192.168.0.1
Автор: res2001
Дата сообщения: 22.09.2010 09:04
Mark_Titov
Уверен что тебе нужен именно telnet? Я бы его не использовал на твоем месте, поищи что-нибудь более защищенное (SSH).
Если надо только подключится, то так: telnet 192.168.0.1
Команды ему передать нельзя, точнее у меня не получилось, командных файлов он тоже не понимает.
Но больше всего меня убил вывод telnet /? в WinXP Pro SP3 Rus.
Во первых не на русском, во вторых хотел перенаправить в файл и обламался.
Хелп нашел только на :
сайте мелкософта
Автор: Mark_Titov
Дата сообщения: 22.09.2010 09:26

Цитата:
Уверен что тебе нужен именно telnet?


Да, именно он и нужен, у меня удаленный девайс через телнет работает, хотелось бы в батнике реализовать вывод некоторой информации о этом девайсе...

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

Жаль...
res2001, благодарю за то что откликнулся...
Автор: bomzzz
Дата сообщения: 22.09.2010 09:31
http://www.killprog.com/ NetView программа, она не консольная, но телнет в ней работает, системным чета ни разу не пробовал, еще какие то проги подворачивались для телнета уже не помню какие. да чета телнет уж сильно дело устаревшее
Автор: Karrakurt
Дата сообщения: 22.09.2010 09:59
Камрады, просветите пожалуйста!
Почему при выполнении нижеследующего кода, не выводятся размеры файлов?

Код: @ECHO off

CLS
CALL :CHK .temp

:CHK
ECHO Curr fld is: %1
FOR /f "tokens=*" %%a IN ('DIR "%1" /b /a:-d /o:s') DO (
    ECHO Size of file %%~a is: %%~za
)

FOR /f "tokens=*" %%a IN ('DIR "%1" /b /a:d') DO (
    IF NOT "%%a" EQU "" CALL :CHK %1\%%a
    PAUSE
)

GOTO :EOF

ECHO.
ECHO.
ECHO.
ECHO End of cycles
PAUSE
Автор: NIKZZZZ
Дата сообщения: 22.09.2010 10:16
Free_Soft

Цитата:
Можно ли как-то в качестве параметра использовать два слова или два символа с пробелом?

Самое простое - заменить пробел на спец. символ


Код: set "par=%par: =_%"
if /i %par%==win_rear goto:1
Автор: BVV63
Дата сообщения: 22.09.2010 10:20
Karrakurt
Подразумевается этот фрагмент?

Код: @ECHO off

CLS
CALL :CHK .temp

:CHK
ECHO Curr fld is: %1
FOR /f "tokens=*" %%a IN ('DIR "%1" /b /a:-d /o:s') DO (
ECHO Size of file %%~a is: %%~za
)
Автор: bomzzz
Дата сообщения: 22.09.2010 10:41

Цитата:
ECHO OFF
COLOR 9F
CLS
for /f "delims=" %%I in ('dir /a:-d /b %1') do echo %%I %%~zI
pause


а у меня выводяться.

Добавлено:
"C:\Documents and Settings\user\Рабочий стол\help.bat" "C:\Documents and Settings\user\Рабочий стол"
Автор: smirnvlad
Дата сообщения: 22.09.2010 10:53
BVV63
bomzzz
Karrakurt

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

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

так показывает
[more]
Код:
@ECHO off

CLS
CALL :CHK .temp
goto :eof

:CHK
ECHO Curr fld is: %1
pushd %1
FOR /f "tokens=*" %%a IN ('DIR /b /a:-d /o:s') DO (
ECHO Size of file %%~a is: %%~za
)

FOR /f "tokens=*" %%a IN ('DIR /b /a:d') DO (
IF NOT "%%a" EQU "" CALL :CHK %%a
PAUSE
)
popd

GOTO :EOF

ECHO.
ECHO.
ECHO.
ECHO End of cycles
PAUSE
Автор: bomzzz
Дата сообщения: 22.09.2010 10:56
у меня показывает если файл занят

Добавлено:
не показывает у системных файлов. но наверно надо какой то ключик добавить
Автор: smirnvlad
Дата сообщения: 22.09.2010 10:59
bomzzz

Цитата:
у меня показывает если файл занят

на ntfs показывает, на fat - нет
Автор: bomzzz
Дата сообщения: 22.09.2010 11:03
к меня и на фат 32 показывает.

Добавлено:
и на фат16 тожа
Автор: Mark_Titov
Дата сообщения: 22.09.2010 11:20
bomzzz

Цитата:
http://www.killprog.com/ NetView программа, она не консольная, но телнет в ней работает, системным чета ни разу не пробовал, еще какие то проги подворачивались для телнета уже не помню какие. да чета телнет уж сильно дело устаревшее

В том-то и вся проблема что через консоль нужно...
Автор: res2001
Дата сообщения: 22.09.2010 11:21
Mark_Titov
обычно вместе с телнетом в девайсе есть еще и www и ssh. Потому как телнет не обеспечивает ваще ни какой безопасности. Проверь.
Ну даже если и нет ssh, то можно для подключения по телнет воспользоваться PuTTY - у нее есть соответствующая настройка для подключения по телнет, а у PuTTY есть утиль командной строки, которая позволяет выполнять командные файлы на удаленной стороне - plink, если не ошибаюсь.
Автор: bomzzz
Дата сообщения: 22.09.2010 11:26
PuTTY - вот точно вот ета прога, не смог ее найти у себя, я их коннектил как раз между собой, и она кажется консольная
Автор: smirnvlad
Дата сообщения: 22.09.2010 11:50
bomzzz
ФС не причем
не выводится потому что %%~za получает размер файла с именем %%a из рабочей папки, а dir в коде Karrakurt выводит листинг файлов в папке %1

для сравнения
[more]
Код:
@ECHO off

CLS
CALL :CHK %systemroot%
goto :eof

:CHK
ECHO Curr fld is: %1

FOR /f "tokens=*" %%a IN ('DIR "%1" /b /a:-d /o:s') DO (
ECHO Size of file %%~a is: %%~za
)

pause

pushd %1

FOR /f "tokens=*" %%a IN ('DIR /b /a:-d /o:s') DO (
ECHO Size of file %%~a is: %%~za
)
popd

PAUSE
GOTO :EOF
Автор: bomzzz
Дата сообщения: 22.09.2010 11:55
ага точно в этом дело.

Добавлено:
или надо было путь добавить
Автор: Karrakurt
Дата сообщения: 22.09.2010 13:02
smirnvlad
Спасибо, с pushd работает вроде нормально.
Автор: McPetrovich
Дата сообщения: 22.09.2010 16:17
Доброго времени суток, уважаемые форумчане есть такая задачка....
Существует VPN клиент, к которому есть возможность привязать выполнение определнных команд или исполняемых файлов. Клиент коннектится к одному серверу. Сервер имеет два канала - основной и резервный. Соответственно постоянно рабочий только один. Если падает основной, автоматически поднимается резерв и соответственно если заработал основной, тушится резервный.
В момент запуска VPN клиента у пользователей есть задумка запустить параллельно BAT файл, который пингует оба IP адреса сервера и подскавляет рабочий. И в случае дисконнекта, запускается тот же батник, который делает тоже самое. Тогда вуаля, пользователи просто еще раз нажимают кнопку "Подключить" и не забивают себе голову лишней информацией.

Собственно, привязать все это друг к другу - не проблема.
Проблема в BAT файле Винду я забыл давно и от синтаксиса нахожусь в ступоре Помогите, люди добрые.

Вот пример тренировки на кошках, с условием, что IP_B не работает\не пингуется
Код:

@echo off
SET IP_A = AA.AA.AA.AA
SET IP_B = AA.AA.AA.AA

ping %IP_A% -n 1
if errorlevel = 0 start C:/A_good.txt
if errorlevel = 1 GoTo REZERV

:REZERV
ping %IP_B% -n 1
if errorlevel = 0 start C:/B_good.txt
if errorlevel = 1 GoTo KAPUT

:KAPUT
echo Nichego ne pinguetso!

Нутром чую, проблема в синтаксисе... или в логике.... т.к. скрипт выполняет все по-шагово, пингует IP_A и открывает файлик, потом преходит на блок REZERV, пингует IP_B и тоже как ни странно открывает файлик, потом переходит на последний блок и торжественно выводит фразу....
Автор: smirnvlad
Дата сообщения: 22.09.2010 16:52
McPetrovich

Код:
@echo off
SET "IP_A=AA.AA.AA.AA"
SET "IP_B=AA.AA.AA.AA"

ping %IP_A% -n 1
if %errorlevel%==0 start C:/A_good.txt & goto:eof
if %errorlevel%==1 GoTo REZERV
goto:eof

:REZERV
ping %IP_B% -n 1
if %errorlevel%==0 start C:/B_good.txt & goto:eof
if %errorlevel%==1 GoTo KAPUT
goto :eof

:KAPUT
echo Nichego ne pinguetso!
pause
Автор: Fader
Дата сообщения: 22.09.2010 17:32
Приветствую.

Ищу несложный скрипт (vbs/bat), позволяющий проверять URL на доступность.
Устроил бы простой ответ HTTP. Скажем если код 200 (вообще любой 2хх) скрипт отдает ответ - "ОК"
Если 4хх/5хх - echo ответ "ERROR"

Не хочу изобретать велосипед, да и навыков соответствующих нет. Наверняка кто-нибудь да реализовал такой скрипт.

Спасибо.
Автор: Mark_Titov
Дата сообщения: 22.09.2010 17:43
Ребят, я тут просматривал предыдущие топы и наткнулся на нужную мне штуку.
wolf0425 привел красивый шедулер, в связи с чем вопрос -
Можно ТУДА ЖЕ добавить проверку даты, например если нужно запустить задание 25.09.2010 в 10:52
и что бы не было повтора запуска задания после 25.09.2010...
вот код от wolf0425

Код: :wait
it "%time:~0,5%"=="03:00" goto :reboot
ping -n 5 localhost > nul
goto :wait

:reboot
shutdown /r /t 30
Автор: wolf0425
Дата сообщения: 22.09.2010 17:46
Mark_Titov
а чего бы просто не вписать запуск батника в системный шедулер на нужную дату/время?

в так - добавляешь в строку проверки ещё и дату, какие проблемы то?


Код: :wait
it "%time:~0,5% %date%"=="03:00 25.09.2010" goto :reboot
ping -n 5 localhost > nul
goto :wait

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Windows 7 Starter


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