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

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

Автор: 01MDM
Дата сообщения: 13.02.2008 19:03
Takuja
Название сетевого подключения может быть произвольным, т.к его можно переименовать - не обязательно "Подключение по локальной сети". В этом случае, если искать через ipconfig, будут ошибки.

Попробуй вариант (на XP Home работать не будет). Только для первого сетевого подключения.

Код:
@echo off
for /f "tokens=2 delims==" %%i in ('
wmic nic where DeviceId^=1 get NetConnectionID /value') do (
netsh interface ip set address "%%i" static 10.131.2.163 255.255.255.0 10.131.2.129 1
)
Автор: shva
Дата сообщения: 13.02.2008 20:58
01MDM
Спасибо!
Автор: Sandy Ann
Дата сообщения: 13.02.2008 21:48
Помогите неучу! Переодически ковыряюсь в играх и если оттучить от диска полностью не выходит приходится пользоваться батниками, а конкретнее командой subst. Был нарисован [more=код]subst D: .
if not exist D:\Game.link goto E
if exist D:\Game.link goto DD

:E
subst E: .
if not exist E:\Game.link goto F
if exist E:\Game.link goto ED

:F
subst F: .
if not exist F:\Game.link goto G
if exist F:\Game.link goto FD

:G
subst G: .
if not exist G:\Game.link goto H
if exist G:\Game.link goto GD

:H
subst H: .
if not exist H:\Game.link goto I
if exist H:\Game.link goto HD

:I
subst I: .
if not exist I:\Game.link goto J
if exist I:\Game.link goto ID

:J
subst J: .
if not exist J:\Game.link goto K
if exist J:\Game.link goto JD

:K
subst K: .
if not exist K:\Game.link goto L
if exist K:\Game.link goto KD

:L
subst L: .
if not exist L:\Game.link goto M
if exist L:\Game.link goto LD

:M
subst M: .
if not exist M:\Game.link goto N
if exist M:\Game.link goto MD

:N
subst N: .
if not exist N:\Game.link goto O
if exist N:\Game.link goto ND


subst O: .
if not exist O:\Game.link goto P
if exist O:\Game.link goto OD


subst P: .
if not exist P:\Game.link goto Q
if exist P:\Game.link goto PD

:Q
subst Q: .
if not exist Q:\Game.link goto R
if exist Q:\Game.link goto QD

:R
subst R: .
if not exist R:\Game.link goto S
if exist R:\Game.link goto RD

:S
subst S: .
if not exist S:\Game.link goto T
if exist S:\Game.link goto SD

:T
subst T: .
if not exist T:\Game.link goto U
if exist T:\Game.link goto TD

:U
subst U: .
if not exist U:\Game.link goto V
if exist U:\Game.link goto UD

:V
subst V: .
if not exist V:\Game.link goto W
if exist V:\Game.link goto VD

:W
subst W: .
if not exist W:\Game.link goto X
if exist W:\Game.link goto WD

:X
subst X: .
if not exist X:\Game.link goto Y
if exist X:\Game.link goto XD

:Y
subst Y: .
if not exist Y:\Game.link goto Z
if exist Y:\Game.link goto YD

:Z
subst Z: .
if not exist Z:\Game.link goto ERROR
if exist Z:\Game.link goto ZD

D
@echo off
cls
echo ‘в ав ЁЈал
Game.exe
subst D: /d
exit

:ED
@echo off
cls
echo ‘в ав ЁЈал
Game.exe
subst E: /d
exit

:FD
@echo off
cls
echo ‘в ав ЁЈал
Game.exe
subst F: /d
exit

:GD
@echo off
cls
echo ‘в ав ЁЈал
Game.exe
subst G: /d
exit

:HD
@echo off
cls
echo ‘в ав ЁЈал
Game.exe
subst H: /d
exit

:ID
@echo off
cls
echo ‘в ав ЁЈал
Game.exe
subst I: /d
exit

:JD
@echo off
cls
echo ‘в ав ЁЈал
Game.exe
subst J: /d
exit

:KD
@echo off
cls
echo ‘в ав ЁЈал
Game.exe
subst K: /d
exit

:LD
@echo off
cls
echo ‘в ав ЁЈал
Game.exe
subst L: /d
exit

:MD
@echo off
cls
echo ‘в ав ЁЈал
Game.exe
subst M: /d
exit

:ND
@echo off
cls
echo ‘в ав ЁЈал
Game.exe
subst N: /d
exit

D
@echo off
cls
echo ‘в ав ЁЈал
Game.exe
subst O: /d
exit

D
@echo off
cls
echo ‘в ав ЁЈал
Game.exe
subst P: /d
exit

:QD
@echo off
cls
echo ‘в ав ЁЈал
Game.exe
subst Q: /d
exit

:RD
@echo off
cls
echo ‘в ав ЁЈал
Game.exe
subst R: /d
exit

:SD
@echo off
cls
echo ‘в ав ЁЈал
Game.exe
subst S: /d
exit

:TD
@echo off
cls
echo ‘в ав ЁЈал
Game.exe
subst T: /d
exit

:UD
@echo off
cls
echo ‘в ав ЁЈал
Game.exe
subst U: /d
exit

:VD
@echo off
cls
echo ‘в ав ЁЈал
Game.exe
subst V: /d
exit

:WD
@echo off
cls
echo ‘в ав ЁЈал
Game.exe
subst W: /d
exit

:XD
@echo off
cls
echo ‘в ав ЁЈал
Game.exe
subst X: /d
exit

:YD
@echo off
cls
echo ‘в ав ЁЈал
Game.exe
subst Y: /d
exit

:ZD
@echo off
cls
echo ‘в ав ЁЈал
Game.exe
subst Z: /d
exit

:ERROR
subst D: /d
subst E: /d
subst F: /d
subst G: /d
subst H: /d
subst I: /d
subst J: /d
subst K: /d
subst L: /d
subst M: /d
subst N: /d
subst O: /d
subst P: /d
subst Q: /d
subst R: /d
subst S: /d
subst T: /d
subst U: /d
subst V: /d
subst W: /d
subst X: /d
subst Y: /d
subst Z: /d
@echo off
cls
echo ЌҐў®§¬®¦-® ᮧ¤ вм ўЁавг «м-л© ¤ЁбЄ
echo ‚ᥠЎгЄўл ¤ЁбЄ § -пвл
echo €бЇа ў«п© бЁвг жЁо!!!
pause
exit
--------------------------------
Где Game.link метка, по которой определяется, что команда subst успешно выполнена.
Game.exe сама игра[/more], избавляющий конечного юзера от проблем и без проблем пашущий в Хрюшке. Но в системах 9х поперли проблемы:
*При попадании на съемный диск выводится запрос "стоп\повтор\сброс\". Как игнорировать сей запрос?
*При запуске игры код выполняется дальше, а не ждет, пока игра завершится.
Подскажите, как подправить батник, чтоб он работал в 9х\МЕ так же, как и в ХР.
Автор: evgeni666
Дата сообщения: 14.02.2008 08:00
Sandy Ann
Как первое лечится - не знаю.
"Game.exe" замени на "start /w Game.exe"
а еще лучше в окне дос запусти start /?
Автор: 01MDM
Дата сообщения: 14.02.2008 08:06
Sandy Ann
Кто сейчас помнит, что можно в 98?

Код:
@echo off
for %%a in (q w e r t y u i o p s d f g h j k l z x c v n m) do (
    dir %%a: 1>nul 2>&1
    if %errorlevel%==1 (
        set letter=%%a
        goto Game
    )
)
:Game
subst %letter%: "Path\To Game\Folder"
start /wait "" "%letter%:\Game.exe"
subst %letter%: /d
Автор: Takuja
Дата сообщения: 14.02.2008 10:19
блин. ничего не понял и то что написано у меня не заработало. Скажите а можно как то перебирать подключения по очереди? что не по имени подключения задавать настройки а по порядку подключения?
другими словами как мне например применить
netsh interface ip set address "Подключение по локальной сети" static 10.131.2.163 255.255.255.0 10.131.2.129 1
к первому или второму подключению? изначалосьно считается что подключение всего одно, но вот как оно называется никто не знает, вот какой такой код нада применить что бы оно само подумало какое у компа подключение и само его поменяло.

Добавлено:
2 01MDM
Выполнил

Код: wmic nic where DeviceId=1 >> d:\2.txt
Автор: 01MDM
Дата сообщения: 14.02.2008 11:28
Takuja

Цитата:
wmic nic where DeviceId=1 >> d:\2.txt

Надо:

Код:
wmic nic where DeviceId=1 get NetConnectionID /value
Автор: Takuja
Дата сообщения: 14.02.2008 12:28
Так... и как мне поставить ту кодировку? а то у меня с того кода что ты прислал, получается какая то абракодабара

Добавлено:
ага стоп! понял, и разобрался.
ответ уже приходит в нуужной кодировке, мне её отслеживать не нужно.
Вообщем второй вариант через IPCONFIG это то что мне нада. Спасибо большое. Скоро выложу сюда коды общей работы и небольшой концепт общего труда.

Добавлено:
Итак!
ЗАДАЧА:
Создание астоматической настройки статических адресов привязанных к мак адресам сетевых адаптеров
или
Настройка IP по MAC в ручную.

ЦЕЛЬ:
Установка сетевых настроек для локальной сети без использования ХОСТА доменов.
Всё решается давольно просто двмя файлами.
1. (autoconfig.bat) Определяет МакАдрес сетевой карты и вызывает одноименный фал настройки (этот файл всего один и является "движком").
2. (00-04-4B-80-80-03.bat)Определяет политику сетевого адаптера (этих файлов будет столько, сколько машин в сети).


Код: [/code]




Добавлено:
МОДЕРАТОРЫ
Если можете, поправте моё соогбщение, удалив лишнее
--------------------------------------------------
Итак!
ЗАДАЧА:
Создание астоматической настройки статических адресов привязанных к мак адресам сетевых адаптеров
или
Настройка IP по MAC в ручную.

ЦЕЛЬ:
Установка сетевых настроек для локальной сети без использования ХОСТА доменов.

Всё решается давольно просто тремя файлами.
1. (autoconfig.bat) Определяет МакАдрес сетевой карты и вызывает одноименный фал настройки (этот файл всего один и является "движком").
2. (00-04-4B-80-80-03.bat)Определяет политику сетевого адаптера (этих файлов будет столько, сколько машин в сети).
3. (getmac.bat) Создание списка макадресов. (необходимо запстить на каждом компе в сети).

Чаще всего в сети создаются унифицированные образы виндовса и после отката, приходиться настраивать виндовс в ручную.
Теперь это можно автоматизировать.

autoconfig.bat

Код: @echo off
cls
setlocal
for /f "tokens=1" %%i in ('getmac /nh') do (set mac=%%i.bat && goto:next)

:next
echo NET SETUP START
echo %mac%
call \\autoboot\autoconfig\%mac%.bat
echo NET SETUP OWER
pause
Автор: Sandy Ann
Дата сообщения: 14.02.2008 19:38
evgeni666
01MDM
Запустить игру через start вообще не удается. Что делать?!!
Автор: 01MDM
Дата сообщения: 14.02.2008 20:15
Sandy Ann
А где лежит батник? Если в той же папке, что и Game.exe, то измени

Код:
@echo off
for %%a in (q w e r t y u i o p s d f g h j k l z x c v n m) do (
dir %%a: 1>nul 2>&1
if %errorlevel%==1 (
set letter=%%a
goto Game
)
)
:Game
subst %letter%: "."
%letter%:
start /wait "" game.exe
subst %letter%: /d
exit
Автор: Sandy Ann
Дата сообщения: 14.02.2008 20:27
Ага, просто вбиваю в батник

Код: start game.exe
Автор: batniki
Дата сообщения: 14.02.2008 22:28
Помогите, не работает скрипт... не видит в упор settings.txt
@echo off

rem Читаем настройки из файла settings.txt, который должен располагаться в
rem том же каталоге, что и bat-файл. Если не удалось распарсить настройки -
rem выходим с ненулевым кодом возврата.
call :read_settings %~dp0\settings.txt || exit /b 1

rem Прочитанные настройки:
echo Build mode : %BUILDMODE%
echo Compiler : %COMPILER%
echo Architecture: %ARCH%

rem Выход из сценария. Дальше - только функции.
exit /b 0

rem
rem Функция для чтения настроек из файла.
rem Вход:
rem %1 - Имя файла с настройками
:read_settings

set SETTINGSFILE=%1

rem Проверка существования файла
if not exist %SETTINGSFILE% (
echo FAIL: Файл с настройками отсутствует
exit /b 1
)

rem Обработка файла c настройками
rem Здесь:
rem eol=# указывает на то, что содержимое строки начиная с символа #
rem и до ее конца может быть пропущено как комментарий.
rem
rem delims== указывает, что разделителем значений является символ =
rem
rem tokens=1,2 приводит к тому, что в переменную %%i будет занесен первый
rem токен, а в %%j - второй.
rem

for /f "eol=# delims== tokens=1,2" %%i in (%SETTINGSFILE%) do (
rem В переменной i - ключ
rem В переменной j - значение
rem Мы транслируем это в переменные окружения
set %%i=%%j
)

exit /b 0

Спасибо, большое за оказываемую помощь!
Автор: 01MDM
Дата сообщения: 14.02.2008 23:40
Sandy Ann

Цитата:
Вбиваю несколько укороченном виде:

Еще бы он работал..


Добавлено:
@batniki


Цитата:
rem Читаем настройки из файла settings.txt, который должен располагаться в
rem том же каталоге, что и bat-файл.



Код:
@echo off
if not exist settings.txt (
echo FAIL: Файл с настройками отсутствует
goto:eof
) else (
call:read_settings
)
::echo Build mode : %BUILDMODE%
::echo Compiler : %COMPILER%
::echo Architecture: %ARCH%

echo result
goto:eof

:read_settings
::for /f "eol=# delims== tokens=1,2" %%i in (settings.txt) do (set %%i=%%j)
echo in read_settings
Автор: MammothDEL
Дата сообщения: 15.02.2008 03:03
king_stiven
Спасибо
Автор: Sandy Ann
Дата сообщения: 15.02.2008 06:01

Цитата:
Еще бы он работал..

Сорри, попутал слегка. start /wait "" game.exe так и не пашет, посему забил в последний код вместо game.exe

Код: for %%a in (q w e r t y u i o p s d f g h j k l z x c v n m) do (
dir %%a: 1>nul 2>&1
if %errorlevel%==1 (
set letter=%%a
goto Game
)
)
:Game
subst %letter%: "."
%letter%:
game.exe
subst %letter%: /d
exit
Автор: 01MDM
Дата сообщения: 15.02.2008 08:08
Sandy Ann
Понятно, попробуй по-другому. Без 98 или Me проверяю только на XP.

Код:
@echo off
for %%a in (q w e r t y u i o p s d f g h j k l z x c v n m) do (
if not exist %%a:\nul (
set letter=%%a
goto Game
)
)
:Game
subst %letter%: "."
%letter%:
game.exe
subst %letter%: /d
exit
Автор: Takuja
Дата сообщения: 15.02.2008 12:09
Кто знает как мсенить имя компьютера из командной строки?
Автор: Sandy Ann
Дата сообщения: 15.02.2008 20:07
01MDM
А у меня почему через зад идет даже на ХР?
Во-первых: по команде
Код: if not exist %%a:\nul
Автор: 01MDM
Дата сообщения: 15.02.2008 20:44
Sandy Ann

Цитата:
subst wпробел!!: "."

Значит не правильно скопировал, посмотри в шапке в пункте "Важно:"


Цитата:
на ХР идет попытка создать субдиректорию на пустом CD ROM-е

На пустой болванке или в пустом cd-приводе? Вытащи болванку.

Цитата:
Сетевые и пустые буквы диска пропускаются.

subst только для локальной файловой системы. Что значит пустые буквы диска?

Цитата:
МЕ вообще не воспринимает %%a, только %a.

%a - если только ты пытаешься запустить команду вручную. Как ты вообще запускаешь скрипт?

Скопируй без концевых пробелов, сохрани с расширением .bat (например mount.bat) и запускай.

??


Автор: yurkesha
Дата сообщения: 15.02.2008 20:46

Цитата:
subst wпробел!!: "."
- обрати внимание в шапку - там как раз на этот случай расписано:

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


Добавлено: - подзадержался я с ответом - сорри...
Автор: Sandy Ann
Дата сообщения: 15.02.2008 22:27

Цитата:
Значит не правильно скопировал
Ага, лопухнулся. Счаз без пробела
Цитата:
На пустой болванке или в пустом cd-приводе?
На пустом физическом\виртуальном приводе где L -физический CD-ROM привод. Без диска.

Цитата:
Что значит пустые буквы диска?
Отсутствующие в системе. Слегка некорректно выразился.

Цитата:
Как ты вообще запускаешь скрипт? Скопируй без концевых пробелов, сохрани с расширением .bat и запускай.
Так и делаю.Это пока в ХР. 98-й отказывается:
Автор: 01MDM
Дата сообщения: 16.02.2008 00:25
Sandy Ann
В общем кажется разобрался. Попробуй, батник должен быть в папке с game.exe.

Код:
@echo off
for %%a in (e q w r t y u i o p s d f g h j k l z x c v n m) do (
subst %%a: "."
if exist %%a:\%0.bat call :Game %%a
)
:Game
%1:
start /wait game.exe
subst %1: /d
exit
Автор: Sandy Ann
Дата сообщения: 16.02.2008 14:24

Цитата:
Попробуй, батник

Он создает субдиректории для всех отсутствующих в системе букв диска.
Короче я кажись понял суть. Ни 98-й, ни МЕ не понимают код, в котором присутствуют круглые скобки. В ХР на ура пашет это:

Код: for %%a in (d e f g h i j k d e f g h i j k l m n o p q r s t u v w x y z) do (
subst %%a: .
if exist %%a:\GameLink.link (
set cd=%%a
goto Game
)
)

:Game
Game.exe
subst %cd%: /d
exit
Автор: Brutal
Дата сообщения: 16.02.2008 14:34
А не подскажите ли уважаемые, как из батника узнать свой внешний IP и поместить в файлик или переменную?

Имею ADSL с динамическим внешним IP и хочу слать себе смс в случае смены IP. Со всем остальным разобрался, а с этим нет...
Автор: 01MDM
Дата сообщения: 16.02.2008 15:57
Sandy Ann

Цитата:
Он создает субдиректории для всех отсутствующих в системе букв диска.


У меня на XP отрабатывает без ошибок. Создается только на первой свободной букве и запускает программу. На 98 по идее тоже должен работать, но без тестирования утверждать этого не буду. Единственно что можно еще заменить, это в строке:
subst %%a: "."
на
subst %%a: "%cd%"

Последний вариант

Код:
@echo off
for %%a in (e c f g d i q w r t y u o p s h j k l z x v n m) do (
    subst %%a: "%cd%"
    set letter=%%a
    if exist %%a:\%0.bat goto game

)
:game
%letter%:
start /wait game.exe
subst %letter%: /d
exit
Автор: Lutvun
Дата сообщения: 16.02.2008 20:49
Нужен батник который бы проверял почьтовый ящик на наличее писем и если есть письмо от заданого адресата сохранял его на диск в виде текстового файла(без изображений). Или на крайняк сохранял все писяма на диск(только текст).
П.С. По сути нужен почтовик под ком. строку.
Автор: getname
Дата сообщения: 16.02.2008 21:39
Добрый день!
Помогите, нужен батник который бы выводил на экран количество дней до 20.01.2008, если день наступил сообщить об этом...

мой _бредовый_ вариант

Код: @echo off

goto beg

if
echo var WSHShell = WScript.CreateObject("WScript.Shell"); > %temp%\mes.js
echo WSHShell.Popup("осталось:"str); >> %temp%\mes.js
start %temp%\mes.js
deltree /y %temp%\mes.js
goto end

:tod
echo var WSHShell = WScript.CreateObject("WScript.Shell"); > %temp%\mes.js
echo WSHShell.Popup("сегодня"); >> %temp%\mes.js
start %temp%\mes.js
deltree /y %temp%\mes.js
goto end


:beg
rem в str записать разницу
var str
str="20.02.2008" - "%DATE%"

if str==0 then goto dif else goto tod
:end
Автор: 01MDM
Дата сообщения: 16.02.2008 23:03
getname

Цитата:

который бы выводил на экран количество дней до 20.01.2008, если день наступил сообщить об этом...

Не уверен, что 20 января 2008 года наступит еще раз...
День Сурка?
Автор: getname
Дата сообщения: 17.02.2008 19:16

Цитата:
Не уверен, что 20 января 2008 года наступит еще раз...
о_О а сейчас какой год? :лол:
Цитата:
День Сурка?
совсем не важно.... главное что б работоло... либо так либо с модификацией о начале выводе сообщений с заданной датой(скажем за 10 дней)

помогите...
Автор: 01MDM
Дата сообщения: 17.02.2008 21:19
getname
Посмотри, попробуй переделать. Будут вопросы - спрашивай.

Код:
@echo off
setlocal

:again
set d=%date:~0,2%
set m=%date:~3,2%
set y=%date:~6,4%

if %d:~0,1%==0 set d=%d:~1%
if %m:~0,1%==0 set m=%m:~1%

set /a feb=y%%4
if %feb%==0 (set feb=29) else (set feb=28)

set /a m-=1
if %m%==0 (set yd=0 && goto:skip)

:tok
set /a tok+=1
for /f "tokens=%tok%" %%i in ("31 %feb% 31 30 31 30 31 31 30 31 30 31") do (
set /a yd+=%%i
if not %tok%==%m% goto:tok
)

:skip
set /a res=y*365+y/4+29-feb+yd+d
set tok=
set yd=

if not defined res1 (
set res1=%res%
set /p date="Enter date: "
goto:again
)

set /a res-=res1
if not %res%==0 (
if %res:~0,1%==- (
echo %res:~1% days from %date%
) else (
echo %res% days to %date%
)
) else (
echo today is %date%
)

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869

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


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