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

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

Автор: mike345S
Дата сообщения: 11.01.2009 18:43
jaguarkpi,
Случаем cmd-файл не ping называется?
Автор: Mr_Hat
Дата сообщения: 11.01.2009 21:34
ерунда какая то...
зацикливание случается временами если сам батник назван именем команды.
Автор: jaguarkpi
Дата сообщения: 11.01.2009 23:04
Точно, это я протупил, угадали, батник назвал ping.cmd, это он и вызывал сам себя Пол дня искал в чем проблема, а оказывается такую глупую ошибку допустил. Пасиба огромное
Автор: Mr_Hat
Дата сообщения: 12.01.2009 00:02

Цитата:
оказывается такую глупую ошибку допустил


По моему все с начала на этом попадаются, я не исключение.
Автор: mike345S
Дата сообщения: 12.01.2009 00:27
И я тоже попадался, поэтому и "угадал"
Автор: duh_S
Дата сообщения: 12.01.2009 01:34
подскажите пожалуйста что тут неправильно, а то он просто пингует независимо есть ответ или нет:

Код:
@Echo Off
:BEGIN
CHDIR C:\zyxel-reloader
SLEEP 600
Set cWork=0
Call :CompWork 192.168.0.118
If %cWork%==0 (Goto :reloader)
GoTo :BEGIN

:CompWork
Echo Ping %1
Ping -n 3 %1 >Nul
If ErrorLevel 1 (Goto :BEGIN)
If ErrorLevel 0 (Set cWork=1)
GoTo :BEGIN

:reloader
CALL ZTnBatch -h 192.168.1.1 -timeout 15000 -p parol -timeout 15000 -c "sys reboot"
GoTo :BEGIN



цель кода - перезагрузка шлюза, если он подвис (не отвечает на ping)

здесь

Код:
ZTnBatch


- утилита доступа к шлюзу

также вопрос

Код:
Echo Ping %1
Ping -n 3 %1 >Nul
If ErrorLevel 1 (Goto :BEGIN)
If ErrorLevel 0 (Set cWork=1)



результатом отсутствия 1,2-ух пингов но при наличии 3-го ErrorLevel 1 или ErrorLevel 0? при отсутствии 3х пингов ErrorLevel 0?
Автор: leomaks
Дата сообщения: 12.01.2009 09:14
как перевести в транслит все папки и файлы на диске "Z:" ?
Автор: slay1212
Дата сообщения: 12.01.2009 10:33
duh_S

Цитата:
If %cWork%==0 (Goto :reloader)

Здесь лучше наверное
If !cWork!==0 (Goto :reloader)
Посмотри я делал аналогичный пример он 100 % рабочий. Сделай по аналогии.
Я Проверял на самом компе если он никого не видел из списка хостов я перегружал у него сетевые интерфейсы командой devcon
[more]
@echo off
setlocal enabledelayedexpansion
rem ip_ping.txx список пингуемых хостов лежит в одном каталоге с батником
rem если cwork =1 тогда прошел хотя бы один пинг
rem Символ "||" означает, что следующая за этим символом команда выполняется, если редыдущая команда завершилась с ошибкой.
rem Символ "&&" означает, что следующая за этим символом команда выполняется, если предыдущая команда завершилась без ошибки.

Set cWork=0
For /F %%a In (comps.txx) Do (
Call :CompWork %%a

)
rem если cWork=0, не прошел ни один пинг рестартуем интерфейсы
If "!cWork!"=="0 " Call :res_if %%a
GoTo :EOF

:CompWork
rem Echo Ping %1
Ping -n 1 %1 >Nul && Set cWork=1
GoTo :EOF

:res_if
Echo !date! !time! пропала сеть рестарт интерфейсов ип %1 >> rez.log
)

GoTo :EOF
[/more]
Автор: demon1981
Дата сообщения: 12.01.2009 11:21
Добрый день!
Как в таком цикле

Код: for /l %i in (1,1,n) do set var1=......
Автор: GTHack
Дата сообщения: 12.01.2009 13:12
почему переприсвоение переменной в цикле не пашет ?

FOR /F "tokens=1 delims= " %%i in (1.txt) do (
set a=%%i
echo %a%
)

пишет "Режим вывода команд на экран (ECHO) отключен."

хотя я хочу просто переприсвоить переменную %%i в %a% и вывести на экран

Добавлено:
вообще задача такая - в конце рабочего дня нужно гасить все компы кроме определенных
думал сделать так:

обработать в цикле вывод комманды net view и если строка начинается с \\ и не входит в заданный список - делаем шатдаун

FOR /F "tokens=1 delims= " %%i in ('net view') do (

if not %%i==\\ADMIN if not %%i==\\SERVER if not %%i==\\WSUS echo C:\WINDOWS\system32\shutdown.exe /s /f /m %%i /t 10

}

заминка вышла с проверкой первых 2х символов на "=="
для обычной переменно было бы так

if "%i:~0,2%"=="\\" ........ if not %%i==\\ADMIN if not %%i==\\SERVER .....

а в цикле конструкция if "%i:~0,2%"=="\\" не пашет

help
Автор: Levitant
Дата сообщения: 12.01.2009 14:00
Здравствуйте. Давно к вам не заходил, опять требуется помощь.
Около года назад мне написали как-то следующий скриптик

Код: @Echo off
ial_
ipconfig | Find /i "ppp-unlim">nul || rasphone -d "ppp-unlim"
ping -n 601 -w 1000 127.0.0>nul
goto ial_
Автор: vu1tur
Дата сообщения: 12.01.2009 14:03
Levitant
По-моему проще отключить назначение шлюза по умолчанию для первого соединения — в настройках tcp/ip для подключения.
Автор: Levitant
Дата сообщения: 12.01.2009 14:18

Цитата:
Levitant
По-моему проще отключить назначение шлюза по умолчанию для первого соединения — в настройках tcp/ip для подключения.



Ага, получилось. Большое спасибо, не знал про это.
Автор: Rotorina
Дата сообщения: 12.01.2009 15:17
Elroir
Nagual
Спасибо, заработало ))
Запустил батник Elroir-а, больше по душе оказался тем, что не создает дополнительных файлов.

Не успел обрадовать как столкнулся с следующей ошибкой (при перебрасывании файлов на одном ПК работает замечательно, но с ПК по сети не хочет):

Цитата:
Неправильно указан диск.
Файл не найден.


Код имеет следующий вид:

Код: @echo off
Net session \\192.168.0.100 /del
Net use \\192.168.0.100\1cBackUp /user:User passwd
for /f "tokens=*" %%a in ('dir /b /o-d /tc "\\192.168.0.100\1cBackUp\1cBase_2009*.zip"') do set "fname=%%a" & goto next
:next
xcopy "\\192.168.0.100\%fname%" "D:\22\">nul
for /f "skip=1 tokens=*" %%a in ('dir /b /o-d /tc "D:\22\1cBase_2009*.zip"') do del "D:\22\%%a" & goto :EOF
Автор: GTHack
Дата сообщения: 12.01.2009 18:26
есть файлик
test.txt с содержимым:
1
2
3

есть батник с содержимым:
echo off
for /f "delims= tokens=1" %%i in (test.txt) do (
echo %%i
set %%j=%%i
echo %%j
)

по идее результат должены быть такой
1
1
2
2
3
3

а дает такой
1
%j
2
%j
3
%j

в чем ошибка ?
Автор: king_stiven
Дата сообщения: 12.01.2009 18:31
GTHack


Юзай в шапке
setlocal enabledelayedexpansion и переменные окружения
Автор: GTHack
Дата сообщения: 12.01.2009 18:57
так что ли ? вообще не пашет

setlocal enabledelayedexpansion
cls
echo off
for /f "delims= tokens=1" %%i in (test.txt) do (
echo !i!
)

вообще нихрена не печатает
Автор: king_stiven
Дата сообщения: 12.01.2009 20:24
GTHack

Код: echo off
setlocal enabledelayedexpansion
for /f "delims= tokens=1" %%i in (test.txt) do (
echo %%i
set j=%%i
echo !j!>>1.txt
)
Автор: duh_S
Дата сообщения: 12.01.2009 22:07
slay1212

Цитата:
Цитата:If %cWork%==0 (Goto :reloader)


Здесь лучше наверное
If !cWork!==0 (Goto :reloader)
Посмотри я делал аналогичный пример он 100 % рабочий. Сделай по аналогии.
Я Проверял на самом компе если он никого не видел из списка хостов я перегружал у него сетевые интерфейсы командой devcon
Подробнее...

что-то не получается, также просто строчка

Код: ping 192.168.0.118...
Автор: GTHack
Дата сообщения: 13.01.2009 05:32
Гасим все компы в сети кроме заданных!

Итак, готовое решение - может кому пригодиться (лично я его в шедуллер на 11 вечера воткнул)

echo off
FOR /F "tokens=1 delims= " %%i in ('net view ^| find "\\"') do echo "\\server1\\server2\\wsus" | find /i "%%i">nul || C:\WINDOWS\system32\shutdown.exe /s /f /m %%i /t 10


Добавлено:
в \\server1\\server2\\wsus - прописываем компы которые гасить не нужно
Автор: soulthiefer
Дата сообщения: 13.01.2009 09:12
подскажите плз ... очень интересует можно ли ввести команду ( напрмер ping www.mail.ru) и чтоб окно досовское после выполнения не закрылось а повисло например до нажатия клавиши любой ?
Автор: NIKZZZZ
Дата сообщения: 13.01.2009 09:24
soulthiefer

Цитата:
можно ли ввести команду ( напрмер ping www.mail.ru) и чтоб окно досовское после выполнения не закрылось


Код: cmd /c ping http://www.mail.ru & pause
Автор: slay1212
Дата сообщения: 13.01.2009 09:49
duh_S
Что именно не получается ? Попробуй так
If "!cWork!"=="0 "
И подробнее опиши задачу я честно не понял что должен твой батник делать
Автор: soulthiefer
Дата сообщения: 13.01.2009 10:26
NIKZZZZ
СПАСИБОООООООООО БОЛЬШОЕ
Автор: ponand
Дата сообщения: 13.01.2009 10:27
подскажите возможно ли с помощью одного или нескольких батников создать(отредактировать) бат фаил для подключения тома к пустой NTFS папке?
Автор: MammothDEL
Дата сообщения: 13.01.2009 10:38
Возможно ли скрыть символы вводимые с клавы при задании переменной?
set /P Pass=
надо для ввода пароля.. чтобы не палить пасс

Title пример
Echo Введите имя пользователя
set /P User=
Echo.
Echo Введите пароль пользователя
set /P Pass=
Автор: 01MDM
Дата сообщения: 13.01.2009 11:01
ponand

Цитата:
подскажите возможно ли с помощью одного или нескольких батников создать(отредактировать) бат фаил для подключения тома к пустой NTFS папке?

Можно, например:

Код:
mountvol C:\Test \\?\Volume{88530101-7a78-11da-8035-806d6172696f}\
Автор: ponand
Дата сообщения: 13.01.2009 11:24
Я наверно не так выразился мне необходима при установке программы записать в заранее подготовленный бат фаил(для подключения папки) код GUID диска поскольку он на каждой установленной системе Windows XP разный.
Автор: 01MDM
Дата сообщения: 13.01.2009 12:05
ponand
По каким критериям надо определить GUID нужного диска? Дисков может быть не один и не два.
Автор: mirchik777
Дата сообщения: 13.01.2009 12:45
извеняюсь ...

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

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


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