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

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

Автор: KapralBel
Дата сообщения: 28.08.2008 09:30
Mercmer
FC /?
Автор: mailmartines
Дата сообщения: 29.08.2008 00:40
Нужен батник который бы переподключал интернет на удалённой машине.

Есть комп №1 на нем подключение к интернету, на комп №2 нужно запустить батник который отключит подключение к интернету на комп №1 и подключит через определённый промежуток времени (например 10сек).

Есть полный доступ к двум компам. ОС WinXP

Зарание спасибо.
Автор: ladgalec
Дата сообщения: 29.08.2008 09:42
Часто вижу строки типа такой : %date~1,3%

Хотелось бы знать что это за цифры после date ?
Автор: Smitis
Дата сообщения: 29.08.2008 09:55
ladgalec

Цитата:
Часто вижу строки типа такой : %date~1,3%

Хотелось бы знать что это за цифры после date ?


Это выделение подстроки из переменной
set /?
Автор: Nagual
Дата сообщения: 29.08.2008 10:59
Smitis
для новичка ответ имхо сложноватый

ladgalec
наверное все-таки %date:~1,3%

попробую разжевать
запусти у себя такой код

Код:
@echo off

:: отображаем дату
echo %date%

:: отображаем число
echo "%date:~,2%"
:: отображаем месяц
echo "%date:~3,2%"
:: отображаем год
echo "%date:~6,8%"

:: отображаем число 2 (читаем всю переменную, за исключением последних 8-ми символов)
echo "%date:~,-8%"
:: отображаем месяц 2 (читаем всю переменную начиная с 3-го символа и за исключением последних 5-ти символов)
echo "%date:~3,-5%"
:: отображаем год 2 (читаем с конца 4 символа)
echo "%date:~-4%"

pause
Автор: NovaC
Дата сообщения: 29.08.2008 11:51
Насколько я понял этот скрипт перебирает папки и считает их размер.

Код: @echo off
if %2==0 goto :eof
set /a n=%2-1
set size=0
for /r %~dpnx1 %%i in (*.*) do (
call :sum %%~zi
)
:_1
if %size%==0 goto _2
if not %size:~0,1%==0 goto _2
set size=%size:~1%
goto _1
:_2
echo Folder: %size% %~dpnx1
for %%i in (%1\*) do (
echo File: %%~zi %%~dpnxi
)
for /d %%i in (%1\*) do (
call "%~dpnx0" "%%~dpnxi" %n%
)
goto :eof
:sum
set s=0000000000000000%1
set s=%s:~-16%
set size=0000000000000000%size%
set size=%size:~-16%
set /a sr=1%s:~-8%+1%size:~-8%-200000000
set sr=0000000000000000%sr%
set sr=%sr:~-16%
set /a sl=1%s:~0,-8%+1%size:~0,-8%+1%sr:~0,-8%-300000000
set sl=0000000000000000%sl%
set sl=%sl:~-8%
set size=%sl%%sr:~-8%
goto :1
Автор: NIKZZZZ
Дата сообщения: 29.08.2008 15:36
NovaC

Цитата:
но он у меня не отрабатывает.

Ошибка в последней строке:
"goto :1" , надо "goto :eof".


Код: @echo off
::Если уровень 0 - выход.
if %2==0 goto :eof
::Подсчет размера каталога
set /a n=%2-1
set size=0
for /r %~dpnx1 %%i in (*.*) do (
call :sum %%~zi
)
::Удаление незначащих нулей
:_1
if %size%==0 goto _2
if not %size:~0,1%==0 goto _2
set size=%size:~1%
goto _1
:_2
::Вывод каталога и размера
echo Folder: %size% %~dpnx1
::Вывод файлов и их размеров
for %%i in (%1\*) do (
echo File: %%~zi %%~dpnxi
)
::Рекурсивный вызов функции для всех подкаталогов данного каталога. (уровень меньше на 1)
for /d %%i in (%1\*) do (
call "%~dpnx0" "%%~dpnxi" %n%
)
goto :eof
:sum
::Сложение с удвоенной разрядностью, отдельно складываются левые и правые 8 знаков.
::Получаем 16 значные числа с 0 вначале
set s=0000000000000000%1
set s=%s:~-16%
set size=0000000000000000%size%
set size=%size:~-16%
set /a sr=1%s:~-8%+1%size:~-8%-200000000
set sr=0000000000000000%sr%
set sr=%sr:~-16%
::Сложение
::Десятичное число не может начинаться с нуля, поэтому слева приписывается 1 , потом результат корректируется.
set /a sl=1%s:~0,-8%+1%size:~0,-8%+1%sr:~0,-8%-300000000
set sl=0000000000000000%sl%
set sl=%sl:~-8%
set size=%sl%%sr:~-8%
goto :eof
Автор: ssnvit
Дата сообщения: 29.08.2008 16:56
Имеется ли способ удаления папки типа как файл с расширением.
Например есть папка TEST. MFT
Можно ли ее удалить посредством командной строки?
Автор: Elroir
Дата сообщения: 29.08.2008 17:06
ssnvit
Можно. Точно так-же, как и без расширения - комнадой "rd TEST.MFT".
Автор: sunic
Дата сообщения: 29.08.2008 18:43
Приветствую Всех. Прошу большое прощение если оно было но не могу придумать запрос для поисковика
Стоит задача разбрасывать файлы с головной машины с Хрюшой проф СП2 на остальные по сетки в осноывном ХрПроф СП2 кое где В2К СП4
Вопрос возможно ли это реализовать с помощью батника или файла скрипта. Поиск в гугле не принес удолитворения.
Для начала если не сложно для примера можно в отношении одной машины то есть с головной на одну из машин
Заранее спасибо
Автор: VitRom
Дата сообщения: 29.08.2008 19:37
Хорошие слова - "для начала... для примера..." Обещает режим "brain=on" Вот, нарыл в старом хламе (лет 5 назад что-то шаманил у юзеров):

Код: @echo off
REM перебираем список хостов, начинающихся с "\\odb-", для каждого вызываем обработку
net view | find /i "\\odb-" > %TMP%\hostlist.tmp & for /f "tokens=1" %%m in (%TMP%\hostlist.tmp) do call :netcopy %%m
REM прибираемся после окончания списка, стандартная заготовка из другого батника, лишнее так и осталось
del %TMP%\hostlist.tmp & del %TMP%\dirlist.tmp & del %TMP%\dirlist2.tmp

:netcopy
echo =================================================
echo connecting to %1...
REM киляем старую сессию (если машина недавно открывалась) и переподключаемся как админ
net use %1\ipc$ /delete & net use %1\ipc$ admin-pass /user:admin-name
REM забираем права на каталог у юзера, при этом запускаем процесс на удалённой машине
psexec %1 -s c:\system\xcacls.exe c:\Progra~1\Access~1\LightA~1\LA.exe /d User-name /e /y
REM копируем заготовленный ярлычок стандартной проги в квикланч "новичков" (у кого ещё нет)
xcopy /s /y /i /q \\server\install\lan-distr\.links\QL\* "%1\D$\Profiles\%2\Application Data\Microsoft\Internet Explorer\Quick Launch" > nul
goto :eof
Автор: sunic
Дата сообщения: 30.08.2008 11:48
огромное сппасибо буду пробывать.
А эти слова
Цитата:
Хорошие слова - "для начала... для примера..."
просто надо было понимать как хоелось бы рпзобраться самому но не знал от чего толкаться Так сказать точки опоры нет и землю сдвинуть не получается.
Еще раз спасибо Буду дорабатывать для преподавателей чтоб им легче а мне проще жилось
И просто врпрроос в батниках ведь есть возможность считывать из фафйла какуцю нибкдь инфу
Автор: king_stiven
Дата сообщения: 30.08.2008 12:09

Цитата:
И просто врпрроос в батниках ведь есть возможность считывать из фафйла какуцю нибкдь инфу

еъъстьб
Автор: VitRom
Дата сообщения: 30.08.2008 12:39
или невыспанный, или после-пятница :-D

sunic, я и подумал, что "разобраться самому", и порадовался А то "понаехали забегают тут всякие"...
Считывание из файла в моём примере в 3-й строке после амперсанда, ещё вариант - команда type, ещё - find, ещё много других, которые все читают из, и ещё есть спец. утилиты для конкр. случаев, например, для работы с ИНИ и т.п. (в шапке).

Добавлено:
ЗЫ. если твоя задача хоть как-то связана с обновлением какой-нить проги или её данных, присмотрись к синфайлз. Её изюминка в том, что синхро делается при запуске этой самой "какой-нить" программы - ярлычок на прогу заменяется ярлычком на синфайлз, и он при запуске делает синк и потом сразу же стартует прогу.
Автор: episcopZo
Дата сообщения: 30.08.2008 12:53
Всем моё почтение. Задача: в ключе реестра храниться путь к файлу. В каталоге с этим файлом есть еще один, имя его заранее известно, например trpr.exe. Как в бат файле можно запустить этот самый trpr.exe? Спасибо за ваше внимание.
Автор: sunic
Дата сообщения: 30.08.2008 13:49

Цитата:
ЗЫ. если твоя задача хоть как-то связана с обновлением какой-нить проги или её данных, присмотрись к синфайлз

нет намного банальнее разбрасывание методичек и всякой лабуды на крмп ученика А Эта всякая лабуда заранее готовиться преподом
Еще раз огромный санкс
Дальше буду фантазировать
Автор: Jay ru
Дата сообщения: 30.08.2008 15:51
Уважаемые БАТ ГУРУ, помогите ПЛЗ решить вопрос:
Сделал батник для автоматической настройки системы т.е. Имя компа, ip, шлюз. и др.
Немогу поменять рабочую группу.

Какой командой енто меняется??

Для изменения имени машины использовал compname.exe стыриной с этого форума, работает на ура, может есть что нить подобное для рабочей группы...

Заранее спасибо...
Автор: ssnvit
Дата сообщения: 30.08.2008 22:20
Имеется замечательная команда forfiles, которую я успешно применяю для удаления старых файлов по аргументу /d. Можно ли и как применить данную команду для удаления не только файлов, но и папок. Например в папке c:\test находятся файлы, созданные 30 дней назад. Задача - удалить эти файлы вместе с папкой. Или же надо подсчитать, что папка пустая и потом уже удалять ее. Может у кого есть соображения?
Автор: 01MDM
Дата сообщения: 31.08.2008 02:46
ssnvit

Цитата:
Задача - удалить эти файлы вместе с папкой.


Код:
rd /s /q c:\test
Автор: azamapendrus
Дата сообщения: 31.08.2008 13:20
Необходимо копировать все файлы *.sys со всех дисков (со всеми атрибутами-системный, архивный,скрытый, только для чтения и.т.д.) в папку , которая должна создаваться в том месте ,откуда батник запущен.
Что-то типа такого:
@echo on
xcopy c:\*.sys /s /q /h /y

здесь только для c:, и копирует вместе с папками,а нужны только файлы.
Автор: Smitis
Дата сообщения: 31.08.2008 16:08
azamapendrus

Цитата:
Необходимо копировать все файлы *.sys со всех дисков (со всеми атрибутами-системный, архивный,скрытый, только для чтения и.т.д.) в папку , которая должна создаваться в том месте ,откуда батник запущен.

Простейший вариант:

Код:
md 111 2> nul
for /f %%f in ('dir /b/s/a c:\*.sys') do copy /y "%%~f" 111\ > nul
Автор: ssnvit
Дата сообщения: 31.08.2008 20:09
01MDM

Цитата:
[/q]
[q]Код:
rd /s /q c:\test


что-то у меня не катит
пишу команду forfiles /p c:\test /m *.txt /d -30 /c "cmd /c rd /s c:\test" и видим следующее - файлы устаревшие она удалила, папка пуста, а вот сообщение "процесс не может получить доступ к файлу, так как этот файл занят другим процессом".
Таким образом папка не удаляется, хотя файлы четко удаляет.
Может есть какая-то тонкость а применении forfiles.
Вот допустим папки с именами типа 20080823 она корректно удаляет и файлы и папки, но там я команду писал немного другую forfiles /p c:\20080823 /s /m *.txt /d -30 /c "cmd /c del /q @path"
Автор: 01MDM
Дата сообщения: 31.08.2008 20:37
ssnvit

Цитата:
"процесс не может получить доступ к файлу, так как этот файл занят другим процессом".


Наверное forfiles когда сканирует, перемещается в данную папку. Поэтому ее и не получается удалить

Лучше будет так, к тому же случайно не удалишь нужные файлы. Т.е удалится только пустая папка.

Код:
forfiles /p c:\test /m *.txt /d -30 /c "cmd /c del @FILE" && rd c:\test
Автор: king_stiven
Дата сообщения: 31.08.2008 21:22
azamapendrus

Код: for %%e in (q w e r t y u i o p l k j h g f d s a z x c v b n m) do (
for /f "tokens=*" %%f in ('dir /b/s/a-d %%e:\*.sys') do xcopy "%%f" 111 /i /r /h /y > nul
)
Автор: NovaC
Дата сообщения: 01.09.2008 04:03
NIKZZZZ

Цитата:
Ошибка в последней строке: "goto :1" , надо "goto :eof".

"goto :1" это я уже потом правил, а с "goto :eof" выдаёт :

Код: F:\Backup\dir>t.cmd F:\backup\dir\ 2 1>t.txt
Отсутствующий оператор.
- - - - - - - - -
Отсутствующий оператор.
Непредвиденное появление: 998712.
Автор: ladgalec
Дата сообщения: 01.09.2008 04:41
Nagual
Огромное спасибо !
Вник,понял .

Добавлено:
И ещё вопрос :

Пишу в окне CMD : taskkill
А окно пишет : Класс не зарегистрирован.
Что это ? 0_о
Автор: sunic
Дата сообщения: 01.09.2008 06:48

Извените а не подскажете хорошую (читать толковую литературу) по батникам И лучше чтоб на великом и могучем. В шапке да есть толковые но они в большенстве своем на буржуйском
Автор: azamapendrus
Дата сообщения: 01.09.2008 11:40
king_stiven
md LOG 2> nul
for %%e in (q w e r t y u i o p l k j h g f d s a z x c v b n m) do (
for /f "tokens=*" %%f in ('dir /b /s /a-d %%e:\*.sys') do xcopy "%%f" LOG /i /r /h /y > nul
)

Отлично работает! Спасибо.
Автор: Nagual
Дата сообщения: 01.09.2008 13:21
ladgalec
Код:
@echo off
chcp 1251>nul
title
Проверяем наличие утилиты taskkill.exe в %path%
echo
Проверяем наличие утилиты taskkill.exe в %path%
if not exist %windir%
\system32\taskkill.exe echo taskkill.exe надо где-то нарыть и положить в одну из этих папок %path% &goto:_p
echo А taskkill.exe там и не было... о_О
:_p
pause
Автор: azamapendrus
Дата сообщения: 01.09.2008 18:09
sunic
Прога для удобного написания батников новичкам(на русском-могучем и великом):
http://www.m-w-c-s.com/distrib/dr_batcher_1_3_setup.exe
и пилюля к ней:
http://www.rufull.ru/crack/2008/8.August/rufull.ru.keygen.Dr.Batcher.1.3.zip

Добавлено:
Возможно ли спомощью батника заменить или удалить строку в *.doc-файлах ?
В текстовых то можно, а в *.doc-файлах не получается.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

Предыдущая тема: Сброс пароля администратора


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