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

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

Автор: BasiL
Дата сообщения: 09.12.2007 12:24
вот:
работать будет только если интерфейс один и винда - русская:

Код: @echo off

for /f "delims=: tokens=1,2*" %%a in ('ipconfig ^| find "IP-"') do (
    set IPadd=%%b)
echo ipaddress:%IPadd%
for /f "delims=: tokens=1,2*" %%a in ('ipconfig ^| find "255"') do (
    set mask=%%b)
echo netmask:%mask%
for /f "delims=: tokens=1,2*" %%a in ('ipconfig ^| find "шлюз"') do (
    set gw=%%b)
echo gateway:%gw%
netsh interface ip set address name="Подключение по локальной сети" source=static addr=%IPadd% mask=%mask%
netsh interface ip address name="Подключение по локальной сети" gateway=%gw% gwmetric=1
Автор: Zvyagel
Дата сообщения: 09.12.2007 12:36
Батник не срабатывает так как руский текст переводит в иероглифы
Автор: BasiL
Дата сообщения: 09.12.2007 12:39
сохрани в дос кодировке
Автор: Zvyagel
Дата сообщения: 09.12.2007 12:55
Сохранил адрес и маска ставятся а вот шлюз и DNS нет. Главное с компов брать IP а шлюз, маска и днс у всех одинаковые что прописать в батнике что бы шлюз, маски и днс ставило то что я укажу в батнике
Автор: Elroir
Дата сообщения: 09.12.2007 13:03
Zvyagel
Ну так используй из вышеприведенного кода только первый for.
В переменной IPadd у тебя будет нужный айпишник.
Дальше все пропиши руками (маску, шлюз и т.д) - на последних двух строчках впиши свои значения вместо переменных.
P.S. Большая просьба - прежде чем написать, сформулируй свою мысль и расставляй, пожалуйста, знаки препинания.
Автор: Zvyagel
Дата сообщения: 09.12.2007 13:05
А DNS как правильно прописывается? Чтото у меня не получается ничерта
Автор: Elroir
Дата сообщения: 09.12.2007 13:10
Zvyagel

Код:
netsh interface ip set dns "Подключение по локальной сети" static 192.168.0.1
Автор: Zvyagel
Дата сообщения: 09.12.2007 13:35
у меня получился батник такого содержания
@echo off

for /f "delims=: tokens=1,2*" %%a in ('ipconfig ^| find "IP-"') do (
set IPadd=%%b)
echo ipaddress:%IPadd%
for /f "delims=: tokens=1,2*" %%a in ('ipconfig ^| find "255"') do (
set mask=%%b)
echo netmask:%mask%
netsh interface ip set address name="Подключение по локальной сети" static addr=%IPadd% mask=%mask% gateway=192.168.0.2 gwmetric=1
netsh interface ip set dns name="Подключение по локальной сети" static 192.168.0.1


Огромное спасибо все заработало!
Автор: Nagual
Дата сообщения: 10.12.2007 13:47
вот более солидное и универсальное определение шлюза
Код: [no]for[/no] /f "tokens[no]=[/no]3" [no]%%a[/no][no] in[/no] ('reg query "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces" /v DhcpDefaultGateway /t reg_multi_sz /s^[no]|[/no]findstr REG_MULTI_SZ') [no]do[/no] [no]set[/no] gate[no]=%%a[/no]
Автор: Egorart
Дата сообщения: 10.12.2007 16:29
помогите с такой задачей

надо создать такой бат-файл (если это возможно

чтобы он сначало удалял некие файлы в конкретной дерриктории (например c:\Prog File\программа\*.* (должен обрабатывать русские символы и пробелы))
после этого запускал 1 прогу, не дожидаясь её завершение запускал др. прогу с параметрами (например c:\games\run.exe +qwe +123)
Автор: BasiL
Дата сообщения: 10.12.2007 16:59
Egorart


Код: del /f /q "some\dir\*.*"
start first_prog.exe
start c:\games\run.exe +qwe +123
Автор: Estevan
Дата сообщения: 10.12.2007 18:04
Ребята,нужен .bat - ник для следующей задачи:
За сувщевствующими архивами создать файл new.arj,в котором сохранить копию самого нового текстового файла.Вырезать этот файл с других архивов.
Заранее примного благодарен!
Автор: king_stiven
Дата сообщения: 10.12.2007 20:41
Egorart

должен обрабатывать русские символы

chcp 1251
Автор: SymA
Дата сообщения: 10.12.2007 22:29
допустим бат находится в какой-л папке;
необходимо чтобы он во вложенные подпапки добавлял по новой папке . . .
Автор: Elroir
Дата сообщения: 10.12.2007 22:44
Estevan
Что означают слова "За сувщевствующими архивами"?
Откуда брать "самый новый текстовый файл"?
Где лежат другие архивы?
Какая версия arj-а используется?

Добавлено:
SymA

Цитата:
допустим бат находится в какой-л папке;
необходимо чтобы он во вложенные подпапки добавлял по новой папке . . .

Первый вариант - добавляет новую папку только в первый уровень вложенных папок:

Код:
echo off
for /d %%a in (*.*) do md "%%~fa\NEWFOLDER"
Автор: SymA
Дата сообщения: 10.12.2007 23:25
Благодарю!
а можно по строчно разъяснить ? =)
Автор: Estevan
Дата сообщения: 11.12.2007 08:40
"Сувщевствующие! всмысле в како-то папке есть нексолько архивов .arj.Самый новый текстовый надо брать с этих же архивов.Тоесть искать в тех архивах текстовый файл созданый последним.Другие архивы лежат в то же каталоге что и батник
Автор: Elisaveta
Дата сообщения: 11.12.2007 18:13
Уважаемые товарищи!Нужно решение такой задачи:
"Создать Bat-файл,который будет очищать каталоги TMP , TEMP , ROB от всех файлов ,кроме файлов типа .exe и .com . Предвидеть возможность подтверждения или отказа очистки этих каталогов."
Автор: 01MDM
Дата сообщения: 11.12.2007 21:36
Elisaveta
Если TMP и TEMP это %TEMP% (%UserProfile%\Local Settings\Temp). ROB ?

Код:
@echo off
setlocal

set /p toDel="Type Y to clean: "
if "%toDel%"=="" goto:eof
if /i not %toDel%==Y goto:eof

set "cleanpath=%TEMP%;C:\ROB"
for /f "tokens=2,3 delims==;" %%i in ('set cleanpath') do (
call:job %%i
call:job %%j
)
goto:eof

:job
for /f "tokens=*" %%i in ('dir /b /s "%1\*.exe"') do attrib +r "%%i"
for /f "tokens=*" %%i in ('dir /b /s "%1\*.com"') do attrib +r "%%i"
del /a /s /q "%1" 1>nul 2>nul
for /f "tokens=*" %%i in ('dir /b /s "%1\*.exe"') do attrib -r "%%i"
for /f "tokens=*" %%i in ('dir /b /s "%1\*.com"') do attrib -r "%%i"
Автор: BasiL
Дата сообщения: 12.12.2007 09:14
а я бы сделал так:


Код:
...

:job
for /f "tokens=*" %%i in ('dir /b /s ^| findstr /v /e ".exe .com"') do del /s /f "%%i"

Автор: Elroir
Дата сообщения: 12.12.2007 10:33
SymA
Можно.
Первый вариант:
for /d %%a in (*.*) do md "%%~fa\NEWFOLDER" - проходим по всем директориям в текущей директории и создаем в каждой новую директорию NEWFOLDER. В переменную %%а подставляется название очереднох поддиректории, а %%~fa дает нам полный путь к этой поддиректории.
Второй вариант:
Используется рекурсия - вызывается виртуальный батник :try, ему передается название текущей директории в качестве аргумента командной строки (call :try "%cd%"). В самом :try используется та же самое, что и в первом варианте - for который бежит по всем поддиректориям, только он делает два действия - вызывает виртуальный батник для каждой найденной поддиректории (call :try "%%a")
и, после этого создает в ней новую директорию (md "%%~fa\NEWFOLDER").


Estevan

Цитата:
всмысле в како-то папке есть нексолько архивов .arj.Самый новый текстовый надо брать с этих же архивов.Тоесть искать в тех архивах текстовый файл созданый последним.Другие архивы лежат в то же каталоге что и батник

Я не вижу способа вытащить из .arj архивов нужные данные.
Автор: king_stiven
Дата сообщения: 12.12.2007 11:46
Elroir

Вариант второй - добавляет новую папку в каждую вложенную папку, на всех подуровнях:

А так не проще?

for /f "tokens=*" %%c in ('dir /b /s /a:d') do md "%%c\NEWFOLDER"

Добавлено:
BasiL

findstr /v /e ".exe .com"

Хорошо!
Автор: Elroir
Дата сообщения: 12.12.2007 11:59
king_stiven

Цитата:
А так не проще?

Проще, конечно.
Автор: 01MDM
Дата сообщения: 12.12.2007 13:33
BasiL & Elisaveta
Да так лучше

Код:
@echo off
setlocal

set /p toDel="Type Y to clean: "
if "%toDel%"=="" goto:eof
if /i not %toDel%==Y goto:eof

set "cleanpath=%TEMP%;C:\ROB"
for /f "tokens=2,3 delims==;" %%i in ('set cleanpath') do (
call:job "%%i"
call:job "%%j"
)
goto:eof

:job
for /f "tokens=*" %%i in ('dir /b /s %1 ^| findstr /v /i /e ".exe .com"') do del /q "%%i"
Автор: SaDim
Дата сообщения: 12.12.2007 21:00
Помогите пожалуйста
Может есть возможность в bat(cmd)файле (без сторонних прог) создать меню (типа как в CONFIG.SYS)
Вообщем нужно регестрировать или разрегестрировать DLL через один bat(cmd) скажем выводится на экран
Y регистрация
N разрегистрация
нажимая Y или N запускается нужная команда
Автор: 01MDM
Дата сообщения: 12.12.2007 22:03
SaDim

Код:
@echo off
setlocal

set /p YN="Register/Unregister *.dll [Y/N]: "
if "%YN%"=="" goto:eof
if /i %YN%==Y goto:reg
if /i %YN%==N goto:unreg
goto:eof

:reg
call:choice register
regsvr32 %dllpath%
goto:eof

:unreg
call:choice unregister
regsvr32 /u %dllpath%
goto:eof

:choice
set /p dllpath="Specify the path to a file, to %1 it: "
Автор: se111
Дата сообщения: 13.12.2007 06:00
забыл команду черт побери.
нужно вставить в bat неинтерактивную паузу на 30 секунд. подскажите плиз.
Автор: Nagual
Дата сообщения: 13.12.2007 06:26
se111
ping -n 30 -w 1000 loopback>nul
Автор: vlasenkoa
Дата сообщения: 13.12.2007 10:19
Помогите с такой задачей

надо создать такой бат-файл (если такое возможно)!

заходит на ftp://ftp.drweb.com/pub/drweb/cureit/cureit.exe

и сохраняет cureit.exe в локальную папку например D:\Antivirus
Автор: Ilyansk
Дата сообщения: 13.12.2007 13:26
создешь текстовый файл, например ftp.cms
вставляешь туда
Код: get pub/drweb/cureit/cureit.exe d:\antivirus
quit

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869

Предыдущая тема: Доступ к реестру через RegEdit?


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