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

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

Автор: Misha1989
Дата сообщения: 04.03.2011 18:02
mem0rizer
Цитата:
проверить состояние интернет-подключения (подключено\не подключено) в батнике?

Можно пропинговать 1-2 хоста, например mail.ru yandex.ru и если они доступны - сделать вывод что интернет работает. Это устроит?
Автор: mem0rizer
Дата сообщения: 04.03.2011 18:08
to Misha1989:

Как это сделать с помощью пинга я знаю - такой способ не желателен, ибо есть злой фаерволл, блокирующий любые пинги...
Автор: 01MDM
Дата сообщения: 04.03.2011 18:26
mem0rizer
Без пинга можно проверить через wmic. Она не требует административных прав для просмотра информации.

Код:
wmic nic where netconnectionid="Подключение по локальной сети" get netconnectionstatus
Автор: mem0rizer
Дата сообщения: 04.03.2011 18:30
to 01MDM:

То, что надо. Благодарю.
Автор: Mr_Hat
Дата сообщения: 05.03.2011 00:22
Подскажите плиз решить задачу.
Необходимо получить из реестра путь нахождения Рабочего стола для всех пользователей,
и облечь его в переменную
первую часть я получаю

Код: REG QUERY "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /f "Common Desktop"
Автор: Rush
Дата сообщения: 05.03.2011 02:47
Mr_Hat

Код: set "KEY="HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Common Desktop""
for /f "tokens=3*" %%a in ('REG QUERY %KEY%') do set "Desktop=%%b"
Автор: Mr_Hat
Дата сообщения: 05.03.2011 02:58
Rush
Весьма признателен, работает с латиницей.
но теперь возникла другая проблема - кодировка КИРИЛИЦЫ

Цитата:
"Desktop=C:\Documents and Settings\All Users\╨рсюўшщ ёЄюы"

chcp 1251 - не помогает
в идеале должно быть так
Цитата:
c:\Documents and Settings\All Users\Рабочий стол


может есть какие то более простые пути определения нахождения пути для разных OS ?





Автор: Rush
Дата сообщения: 05.03.2011 03:14
Mr_Hat

Цитата:
chcp 1251 - не помогает

Не могу смоделировать - у меня нормально отображается при chcp 1251.

Добавлено:

Цитата:
может есть какие то более простые пути определения нахождения пути для разных OS ?

%ALLUSERSPROFILE%\Рабочий стол
Автор: Mr_Hat
Дата сообщения: 05.03.2011 03:23
Rush
Весьма странно. у тебя OS какая ?
я проверяю на виртуалке Win Xp Pro SP3 Ru x32
там имена папок в реестре кирилицей, на Семерке латиницей. так что в случае с 7кой проблемы не возникает..


Цитата:
может есть какие то более простые пути определения нахождения пути для разных OS ?

%ALLUSERSPROFILE%\Рабочий стол


ну этот вариант не универсален, так как папки Рабочий стол в семерке нет, там Desktop,
а стало быть не сработает.
хотя конечно просто не спорю, хотя хотелось бы все же добиться универсальности.
Автор: Rush
Дата сообщения: 05.03.2011 04:00
Mr_Hat

Цитата:
Весьма странно. у тебя OS какая ?

такая же.
Попробуй так:

Код: @set @x=0/*
@echo off
for /f "tokens=*" %%a in ('cscript /nologo /e:javascript %0') do set "Desktop=%%a"
echo %Desktop%
pause>nul
goto:eof
*/
WScript.Echo(WScript.CreateObject('WScript.Shell').SpecialFolders('AllUsersDesktop'));
Автор: Mr_Hat
Дата сообщения: 05.03.2011 04:24

Цитата:
@set @x=0/*
@echo off
for /f "tokens=*" %%a in ('cscript /nologo /e:javascript %0') do set "Desktop=%%a"
echo %Desktop%
pause>nul
goto:eof
*/
WScript.Echo(WScript.CreateObject('WScript.Shell').SpecialFolders('AllUsersDesktop'));


В этом случае отображение кириллицы верно, но оно вроде не переменная которую можно использовать далее в командном файле.
Автор: Rush
Дата сообщения: 05.03.2011 04:32
Mr_Hat

Цитата:
В этом случае отображение кириллицы верно, но оно вроде не переменная которую можно использовать далее в командном файле.

Почему?
Оно также как и раньше в переменной %Desktop%

Код: @set @x=0/*



<эдесь можно писать
все что пожелаешь
в батнике>




for /f "tokens=*" %%a in ('cscript /nologo /e:javascript %0') do set "Desktop=%%a"



<эдесь можно писать
все что пожелаешь
в батнике>



goto:eof
*/
WScript.Echo(WScript.CreateObject('WScript.Shell').SpecialFolders('AllUsersDesktop'));
Автор: Mr_Hat
Дата сообщения: 05.03.2011 05:08
Rush
Буду пробовать, только соберу все до кучи..

Добавлено:

На виртуалке Win XP Pro Rus Sp3 x32 - ok
Win XP Pro Rus Sp2 x64 - ok
Win 7 Home advansed Rus x64 - ok
Win 7 Home advansed Rus x32 - ok

Выражаю тебе свою огромную благодарность
Автор: king_stiven
Дата сообщения: 05.03.2011 13:30
Я снова про "увидеть все компы на роутере". Можно по телнету зайти на роутер и исполнить
arp show
но как это дело присобачить на автопроверку?
Автор: res2001
Дата сообщения: 05.03.2011 13:50
king_stiven
Можно, только виндовый телнет не пойдет, надо что-нить по продвинутей, который умеет сценарии выполнять, вывод в файл записывать.
В составе PuTTY есть утиль plink, которая вроде бы все это умеет.
Автор: king_stiven
Дата сообщения: 05.03.2011 17:54
ага, решилось с ней.
Автор: mem0rizer
Дата сообщения: 05.03.2011 19:03
Здравствуйте.
Есть такой скриптец, каждые 1,5 минуты устанавливающий соединение с инетом:

@echo off
echo = %date% %time% -- START =

rem Все настройки вынесены в этот блок:

rem Имя подключения:
set DialName=ХХХХХХХХХ
rem Логин:
set Login=ХХХХХХХХХ
rem Пароль:
set Password=ХХХХХХХХХ

:start
echo.
echo %date% %time%
echo.
rasdial %DialName% %Login% %Password%
echo.
goto end

:end
echo.
choice /C:C /T:C,90 /N Pause 1,5 minutes. [C]onnect
goto start
:1
goto start

нужно добавить туда еще командочку типа "rasdial %DialName% /disconnect", которая должна выполняться каждые 90 минут - как это сделать (и можно ли), не привлекая WSH и сторонних программ и файлов, кроме "CHOISE.COM"?
Автор: wolf0425
Дата сообщения: 05.03.2011 20:13
mem0rizer да влепи в начало :start счетчик цикла и вызывай /disconnect на каждый 60й раз, нафиг тебе точное то время там?
Автор: mem0rizer
Дата сообщения: 05.03.2011 20:39
to wolf0425:

Ну, собственно, у меня пров - мудак: примерно каждые 90 минут происходит "залипание" соединения (данные не идут, но подключение не разрывается) и случаются разрывы соединения, но уже рандомно - для борьбы со второй напастью и служит этот скрипт, а вот для борьбы с первой я и хочу второй таймер замутить...
Автор: Misha1989
Дата сообщения: 05.03.2011 20:45
mem0rizer
Так wolf0425 правильно сказал - таймер тут особо не нужен, делаешь счётчик и на 60-м проходе перед установкой соединения делаешь дисконнект.
Автор: mem0rizer
Дата сообщения: 05.03.2011 20:57
to Misha1989:
to wolf0425:

Все-все, до меня дошло, сделал счетчик - работает, как надо. Вторые сутки на работе - бошка уже туго соображает Благодарю за помощь.
Автор: INKOGNI
Дата сообщения: 06.03.2011 22:07
Народ, как правильно будет выглядеть батник на удаление в компе на всех дисках и во всех вложенных папках скрытых файлов с расширением .pic и желательно с отображением на экране найденных и удаленных файлов и в конце для выхода запросом нажатия любой кнопки.
Автор: 01MDM
Дата сообщения: 06.03.2011 22:27
INKOGNI

Код:
@echo off

for %%i in (q w e r t y u i o p a s d f g h j k l z x c v b n m) do (

if exist %%i: del /s /a /f %%i:\*.pic

)

pause
Автор: INKOGNI
Дата сообщения: 06.03.2011 22:42
01MDM
То, что нужно, благодарю
Автор: korosya
Дата сообщения: 07.03.2011 12:16
Непонятки с FINDSTR
Берётся файл txtsetup.sif из дистрибутива WinXp/ Выполняется комманда

Код: FINDSTR /R /C:"usb[eou]hci *= *\"" /C:"usbhub *= *\"" /C:"usbstor *= *\"" txtsetup.sif
Автор: lorents
Дата сообщения: 07.03.2011 13:21
Не обращаем внимания. Разобрался
Автор: res2001
Дата сообщения: 07.03.2011 13:48
lorents

Цитата:
не получается получить значение %%j

Дык в процедуре print и нет никакого значения %%j. Откуда бы ему взяться?

Добавлено:
korosya
Вот так работает:
>>1.txt FINDSTR /R /C:"usb[eou]hci *= *\"" /C:"usbhub *= *\"" /C:"usbstor *= *\"" txtsetup.sif


Добавлено:
Это происходит видимо из-за того, что у тебя нечетное количество кавычек в ком.строке и cmd решает, что последняя кавычка не закрыта, поэтому он закрывает ее в конце всей строки, таким образом получаем команду:
FINDSTR /R /C:"usb[eou]hci *= *\"" /C:"usbhub *= *\"" /C:"usbstor *= *\"" txtsetup.sif >> 1.txt"
т.е. >>1.txt передается как параметр для findstr, а не как указание cmd перенаправить выходной поток в файл.
Автор: Free_Soft
Дата сообщения: 07.03.2011 23:14
люди, помогите...
так

Код: 1>>"%windir%\temp\clear.vbs" echo.CreateObject("WScript.Shell").Run "%windir%\temp\clear.cmd", 0, False
Автор: Rush
Дата сообщения: 08.03.2011 05:35
Free_Soft
Спотыкается на скобках. Исправь на
Код: CreateObject^("WScript.Shell"^).Run
Автор: Free_Soft
Дата сообщения: 08.03.2011 08:28
Rush
да, ступил...

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071

Предыдущая тема: зависает установка Windows XP: 39 минут


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