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

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

Автор: pgofman2
Дата сообщения: 07.12.2009 15:32
Ситуация банальна - надо ограничить работу ребенка на компьютере!

Имеется роутер на которм я создаю временные промежутки доступа для определенного IP
На компьютере ребенка надо установить батничек запущенный в виде сервиса (sservice.bat или еще как нибудь неприкательнее назвать)

задача батника - пинговать 10 пакетами в бакгроунде каждые 10 минут IP провайдера - и при трех неудачах принудительно отправить компьютер на выключение

PS - ребенок - программу запущенную или закинутую в старт может удалить - а вот с сервисами неразберется точно

кто что посоветует?
спасибо заранее всем кто откликнулся
Автор: slay1212
Дата сообщения: 07.12.2009 16:18
MothROM2
Способ через ж:: задисаблить всех лок юзеров ( кроме напр админа).
Как вывести список лок юзеров я знаю ( net user) не знаю как отфильтровать правильные (исключив всякие стандартные и отфильтровав доменные).
Ну а потом нужный тебе список юзеров отключаешь
net user vasya_pupkin /times:

И этот юзер уже не залогинится . Пока не отменишь

net user vasya_pupkin /times:M-F,9:00-18:00 или
net user vasya_pupkin /times:ALL

Ну сменить пароль учетки админа хороший пример здесь есть


Код:
REM Меняем случайным образом пароль пользователя
REM и сохраняем информацию об этом в файле PASSWORD.TXT
:random
for /f "tokens=2 delims=:" %%i in ('net user %UName% /random^|find "%UName%"') do set UPwd=%%i
if "%UPwd%"=="" goto random
echo %Uname%:%UPwd% >>PASSWORD.TXT
Автор: mugil_cephalus
Дата сообщения: 07.12.2009 22:06
01MDM
меня идея с прогресс-баром навела на мысль (правда ход мыслей получился витиеватым), что можно еще зделать батник screensaver clock с кодом как у меня здесь - http://forum.ru-board.com/topic.cgi?forum=62&topic=17154&start=1060#21 или похожим по принципу, то есть в скрипте в loop'e вместо echo text записать echo %time% (она же динамическая variable) и при запуске в полноэкранном режиме будет двигаться по экрану CURRENTTIME с задержкой ping -n localhost (а как говорил мне кажется wolf0425 задержка ping'om снизит cpu load)
Автор: seregaknorrr1
Дата сообщения: 08.12.2009 01:31
Помогите модифицировать этот скрипт который Проверяет впн подключение и если не подключено то отключает и переподключает сетевуху и пытаеться подключиться :
@echo off
set connection=server
set pause=10

:LOOP
set connected=0
for /f "delims=" %%i in ('rasdial') do (
if "%%i"=="%connection:"=%" set connected=1
)
if %connected%==0 (
echo %date% %time%    "%connection%" connection not detected. Dialing...
C:\devcon\i386\devcon.exe disable PCI\VEN_1022
sleep 5
C:\devcon\i386\devcon.exe enable PCI\VEN_1022
sleep 5
rasdial "%connection:"=%"
) else (
echo %date% %time%    "%connection%" connection is active.
)
ping -n %pause% 127.0.0.1>nul 2>&1
goto LOOP

Модификация должна делать так чтобы если подключение с впн не установоено то вначале бы он пытался установить подключение rasdial а если подключение не может быть установлено из за ошибки тогда выполнить devcon disable и enable (отключение сетевого адаптера)а затем пытаться подключиться снова.
Автор: Primat081
Дата сообщения: 08.12.2009 07:14
Здравствуйте, помогите решить такую задачу:
Подсчитать количество подкаталогов в заданном (пользователем) каталоге.
Заранее спасибо!!! Очень прошу помочь мне!
Автор: SergioBS
Дата сообщения: 08.12.2009 14:42
Народ замутилась тема здесь: http://forum.ru-board.com/topic.cgi?forum=33&topic=10817#9
Похоже без знатоков не обойтись. Помогите плиз...
Автор: wolf0425
Дата сообщения: 08.12.2009 17:12

Цитата:
Здравствуйте, помогите решить такую задачу:
Подсчитать количество подкаталогов в заданном (пользователем) каталоге.
Заранее спасибо!!! Очень прошу помочь мне!

Код: for /f %%a in ('dir /b/a:d c:\catalog ^| find /c /v "" ') do echo there are %%a catalog(s)
Автор: king_stiven
Дата сообщения: 08.12.2009 19:06
Primat081

Код: @echo off
for /f %%a in ('dir /b/a:d /s d:\') do set /a n+=1
echo %n%
Автор: AnGo
Дата сообщения: 09.12.2009 07:00
Hi, All!
Есть такой вот вопрос.
Имеется батник следующего содержания

robocopy.exe source1 dest1 file1
robocopy.exe source2 dest2 file2
..
..
..
robocopy.exe sourceN destN fileN

Хочется контролировать результат выполнения копирования.
Общее количество кодов robocopy = 17 штук.
Вставлять после каждого вызова, даже сокращенный список кодов возврата, ИМХО, не комильфо.
Можно ли организовать в батнике, что-то типа вызова функции (подпрограммы), но при этом текст функции (подпрограммы) должен находиться в этом же батнике? Как сделать с двумя батниками, я знаю, не хочу плодить дополнительные бат-файлы.
Автор: wolf0425
Дата сообщения: 09.12.2009 07:24

Цитата:
Можно ли организовать в батнике, что-то типа вызова функции (подпрограммы), но при этом текст функции (подпрограммы) должен находиться в этом же батнике?
вдумчиво читать call /?
Ну и демонстрашка:
Код: @echo off
call :metka par3=%3 par2=%2 par1=%1
echo %errorlevel%
goto :eof

:metka
echo %1 %2 %3
exit /b 312
Автор: Maqentaer
Дата сообщения: 09.12.2009 11:37
AnGo
в твоем случае когда фиксированное число итераций, то:

Код: for /l %%i in (1,1,17) do (
    robocopy.exe source%%i dest%%i file%%i
)
Автор: CorwinII
Дата сообщения: 09.12.2009 14:39
Здравствуйте! Помогите решить такую задачу: Мне нужно скопировать несколько файлов с одной папки в другую... Вопрос: как сделать, чтобы рядом с батником создавался текстовый файл со списком файлов, которые были скопированны, (например LOG.TXT) ? Зарание спасибо!
Автор: AnGo
Дата сообщения: 09.12.2009 16:56
Вопрос на засыпку.
У меня в ресурс ките для XP & Win2003 не оказалось утилиты forfiles.
Ресурсный кит скачан с сайта MS.
Вместе с тем, в ките для w2000 она была.
В связи с эти и вопрос, почему её нет в ките для XP? Не оправдала доверия БГ и заменена на что-то другое или ликвидирована как класс?
Кто знает, куда и почему она делась?
Автор: egor23
Дата сообщения: 09.12.2009 18:53
AnGo

Цитата:
Forfiles наконец включена в стандартную установку Windows Vista

http://www.osp.ru/win2000/2009/03/7312618/
Автор: BorlandIMHO
Дата сообщения: 09.12.2009 20:14

Цитата:
нужно скопировать несколько файлов с одной папки в другую... Вопрос: как сделать, чтобы рядом с батником создавался текстовый файл со списком файлов, которые были скопированны, (например LOG.TXT)
В простейшем случае - перенаправлением вывода команды copy.

Код: copy "c:\source folder\*.*" "d:\target folder">>d:\copylog.txt".
Автор: Ninja33
Дата сообщения: 09.12.2009 21:29
BorlandIMHO Спасибо, я как раз тоже искал решение аналогичной задачи, своим ответом Вы мне очень помогли!
Только у меня задача немного отличается, а именно мне нужно также скопировать из папки в папку, с созданием лога без дополнительной строки, в папке от куда запускался батник, только без команды FOR... Реально ли так сделать?
Автор: wolf0425
Дата сообщения: 09.12.2009 21:56
Ninja33 а чем тебе команда FOR помешала?
Автор: BVV63
Дата сообщения: 10.12.2009 08:10
Подскажите, пожалуйста, как можно определить длину переменной (переменная - одним словом, т. е. не содержит пробелов)?
Автор: CorwinII
Дата сообщения: 10.12.2009 08:14
BorlandIMHO
Спасибо, работает!
Автор: Maqentaer
Дата сообщения: 10.12.2009 11:11
BVV63

Код: set "str=%~1"
set length=0
:loop
if defined str (
    set "str=%str:~0,-1%"
    set /A length += 1
    goto loop
)
echo %length%
Автор: NONONINI
Дата сообщения: 10.12.2009 16:14
Подскажите, как сделать паузу между откл. и подключением, например в 5сек
@echo off
rasdial.exe "internet" /disconnect
nircmdc.exe wait 15000
:Connect
rasdial.exe "internet" "Логин" "пароль"
rasdial.exe | find.exe /i "internet"
if %errorlevel%==1 (nircmdc.exe wait 5000 & goto Connect)
Автор: BorlandIMHO
Дата сообщения: 10.12.2009 16:47

Цитата:
с созданием лога без дополнительной строки, в папке от куда запускался батник, только без команды FOR... Реально ли так сделать?
Да, с некоторыми оговорками.

Код: copy "c:\source folder\*.*" "d:\target folder"|find /V /I "скопировано файлов">>%~dp0copylog.txt
Автор: MuxauJl
Дата сообщения: 10.12.2009 17:15
Добрый день.
Есть задачка. Имеется исходный текстовый файл 1.txt и новый файл 2.txt, примерно следующего содержания:
1.txt
один
два
три
четыре
пять

2.txt
три
четыре
пять
шесть
семь
восемь

Нужно вывести в файл 3.txt следующий результат:
шесть
семь
восемь
Автор: BorlandIMHO
Дата сообщения: 10.12.2009 17:50
MuxauJl

Код: for /f %%A in (2.txt) do (
find /i "%%A" 1.txt
if ERRORLEVEL 1 echo %%A >>3.txt
)
Автор: MuxauJl
Дата сообщения: 10.12.2009 18:14
Спасибо, для слов из моего примера работает. Но дело в том, что записи в файлах содержат несколько слов в строке, так же в строке могут содержаться как пробелы так и табуляция. Возможно ли переносить строки целиком?
Автор: BorlandIMHO
Дата сообщения: 10.12.2009 18:26

Цитата:
Возможно ли переносить строки целиком?

Не вопрос... Просто нужно было сразу задачу правильно формулировать. Типа "вывести в файл 3.txt строки из файла 2.txt, для которых отсутствуют совпадения в файле 1.txt"...

Код: for /f "delims=" %%A in (2.txt) do (
find /i "%%A" 1.txt
if ERRORLEVEL 1 echo %%A >>3.txt
)
Автор: 01MDM
Дата сообщения: 10.12.2009 19:39
MuxauJl

Код:
1>3.txt findstr /v /g:1.txt 2.txt
Автор: Ninja33
Дата сообщения: 10.12.2009 21:47

Цитата:
Ninja33 а чем тебе команда FOR помешала?

У меня есть батник с таким содержанием:

Код: @echo off
SET WorkDir=%~dp0
set dmdll=%windir%\system32

if not exist "%dmdll%\XceedCry.dll" (
COPY "%WorkDir%\XceedCry.dll" "%dmdll%"
regsvr32 /s "%dmdll%\XceedCry.dll"
)
if not exist "%dmdll%\XCEEDZIP.DLL" (
COPY "%WorkDir%\XCEEDZIP.DLL" "%dmdll%"
regsvr32 /s "%dmdll%\XCEEDZIP.DLL"
)
if not exist "%dmdll%\xcdsfx32.bin" COPY "%WorkDir%\xcdsfx32.bin" "%dmdll%"
if not exist "%dmdll%\asycfilt.dll" COPY "%WorkDir%\asycfilt.dll" "%dmdll%"
if not exist "%dmdll%\stdole2.tlb" COPY "%WorkDir%\stdole2.tlb" "%dmdll%"
Regedit /S %WorkDir%\reg.reg
start "" /WAIT DriverMagician.exe
Автор: mugil_cephalus
Дата сообщения: 11.12.2009 10:08
SANIOK_AV
subj по вопросу с 77-ой страницы
ты спрашивал
Цитата:
1) придумаю как автоматизацию нажатия этих кнопок))

я тут наткнулся (помимо рекомендованного мною решения на autoIt) на команду из vbs/wsh - WshShell.SendKeys http://forum.ru-board.com/topic.cgi?forum=33&topic=1491&start=1340#14
Автор: Eggorka
Дата сообщения: 11.12.2009 11:09
Что-то никто не откликнулся... Неужели задача не имеет решения или я коряво сформулировал вопрос? Попробую немного переформулировать.

Надо из папки D:\IN\ скопировать в папку D:\OUT\ все файлы, причём если в папке D:\OUT\ уже присутствуют файлы с совпадающими именами -- переименовать новые, добавив к имени, скажем, единицу. Пример. Папка IN содержит файлы a.txt и b.txt, папка OUT -- файлы a.txt и c.txt. В результате в каталог D:\OUT\ должны добавиться файлы a1.txt и b.txt.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778

Предыдущая тема: во вкладке автозагрузка


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