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

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

Автор: KapralBel
Дата сообщения: 27.03.2007 15:51
Jeka Str
Есть еще один вариант - на любителя. Если список вариантов ограничен, то можно создавать временные файлы с уникальными именами, которые будут указывать на текущий IP

Но это для того случая если информацию получить нельзя
Автор: 5ar5
Дата сообщения: 27.03.2007 15:53
Пробывал не получается...думаю что нужно еще что-то поменять, либо запускать как-то по-другому...программокой regshot увидел, что когда запускаешь руками, в реестре меняются три ветки:

1.HKLM\SOFTWARE\Microsoft\SystemCertificates\SPC\Certificates\BFF30D77F17EF25562DA75ECEF9FF924DD8F8058\

прамерт blob

2. HKLM\SYSTEM\ControlSet001\Services\RemoteAccess\

параметр Start

3. HKLM\SYSTEM\CurrentControlSet\Services\RemoteAccess\

параметр Start

Менять все эти три значения я не хочу, т.к. первый из них скорее всего будет отличаться на разных компах. Да и во всех статьях, хелпах и т.д. вроде написано что нужно запускать службы через ветку HKLM\SYSTEM\CurrentControlSet\Services\RemoteAccess\.
Автор: KapralBel
Дата сообщения: 27.03.2007 16:37
5ar5
Попробуй sc config имяслужбы start= auto
Автор: Maza Faka
Дата сообщения: 27.03.2007 16:48
Jeka Str

Цитата:
Вот монстры! Спасибо всем сделал по первому примеру добавил несколько if (меняю между 4 адресами) c метками тоже прикольно.


Как именно сделал? Выложи код если не трудно...кстати мой пример пробовал? Я потестил, работает...
Автор: 5ar5
Дата сообщения: 27.03.2007 17:00
KapralBel

Спасибо. Все как всегда легко и просто Читал в описание про эту команду, но почему то воспользоваться ей в голову не пришло.
Автор: Nagual
Дата сообщения: 27.03.2007 21:51
мужики
имя каталога содержит точки, в нем запускается такая конструкция
for /f "tokens=1,2 delims=:." %%a in ("%cd%") do echo "%%~nxb"
можно ли локально заставить отобразить точку несмотря на delims=. ???
Автор: Elroir
Дата сообщения: 28.03.2007 01:16
Nagual
Попробуй так:

Код:
for /f "tokens=1* delims=:." %%a in ("%cd%") do echo "%%~nxb"
Автор: Nagual
Дата сообщения: 28.03.2007 02:00
Elroir
получилось, спс, принцип понял, ща накручивать буду, если получится
пока я победил задачу, но сценарием, а в идеале, хотелось бы одной командой, вот и ищу способы, чтобы укоротить строку, пока вижу только один выход, заменой двух for'-ов на один универсальный, а то два for'-а, пути и много параметров делают свое гадкое дело...

Добавлено:
интересно, а можно ли втыкать переменные два раза тело цикла?
типа for /f %%a… %%i.… ?

Добавлено:
полная победа, задача решена, огромный респект
Автор: Jeka Str
Дата сообщения: 28.03.2007 06:33
Че то java скрипт не работает у меня в опере. Не могу цитаты вставлять.

2Maza Faka. Поробовал твой пример. Он мне понравился больше тем, что не используется промежуточный файл, на нем и остановился. Для полного счастья отсалось расшивровать вот этот код:
For /F "Skip=7 Tokens=1* Delims=" %%a in ('Ipconfig') do (
For /F "Delims=: Tokens=1,2" %%k in ("%%a") do ( .....
и будет мне счастье Кстати где про это можно прочитать, сколько читал про операторы cmd ни чего подобного не встречал.
Автор: Maza Faka
Дата сообщения: 28.03.2007 07:28
Jeka Str

Цитата:
Для полного счастья осталось расшифровать вот этот код:
For /F "Skip=7 Tokens=1* Delims=" %%a in ('Ipconfig') do (
For /F "Delims=: Tokens=1,2" %%k in ("%%a") do ( .....


Рад, что мой батник тебе помог , я сам ими увлёкся недавно...значит в первой строке мы запускаем команду "Ipconfig" и обрабатываем её вывод как строку, пропускаем 7 строк сверху, берём все лексемы (слова, элементы), которые разделены пробелами и присваивем переменной "%%a", во второй строке, разбираем вывод окончательно, то есть указываем, что разделителями являются символы ":", используем две лексемы (до разделителя ":" и после) и используем оператор сравнения, что бы вывести нужную нам лексему...
А почитать можно (нужно) такую литературу:

Попов А. В.
"Командные файлы и сценарии Windows Script Host"

Уильям Р. Станек
"Командная строка Microsoft Windows Справочник администратора"

Ну и конечно почаще посещать эту ветку!




Автор: Jeka Str
Дата сообщения: 28.03.2007 08:39
Огромный сенкс. Буду заглядывать почаще. Вообще я не подозревал что командная строка виндоус умеет такое делать. Считал её более примитивной. Как видно ошибался.
Автор: evle
Дата сообщения: 28.03.2007 17:56
KapralBel
NIKZZZZ
Jeka Str
Дабы использовать в for конструкцию, содержащую запрещённые символы (<, >, |, "), перед этими символами надо ставить ^. Тогда не надо играться с файлами и проверкой условий.

Код:
For /F %%a in ('Ipconfig ^| find "1.1.1.1" ') do ( ...
Автор: Maza Faka
Дата сообщения: 28.03.2007 18:41
evle
Молодец! Я тоже так делал, но батник постоянно выдавал ошибку, потому, что не было знака "^" перед спец символом...и как я не догадался его использовать, воистину RTFM , но разбор всё же нужен:

Код:
@Echo off
For /F "Tokens=1,2 Delims=:" %%i in ('Ipconfig ^| Find "192.168.0.10"') do Echo %%j
Автор: NIKZZZZ
Дата сообщения: 28.03.2007 22:16
evle
А может ты знаешь, как решить такую проблему:

For /F %%i in ('call :xx ') do ( ...
......
:xx
......

Естественно без второго батника.
Автор: Elroir
Дата сообщения: 29.03.2007 01:10
NIKZZZZ
Я знаю :

Код:
@echo off
if "%1"=="xx" goto :xx
for /f "usebackq" %%a in (`"%0 xx"`) do (
...
...
...
)
goto :EOF
:xx
rem Here your code
...
...
...
Автор: NIKZZZZ
Дата сообщения: 29.03.2007 10:13
Elroir
Красивое решение
Автор: AndreyDanilik
Дата сообщения: 29.03.2007 10:16
у меня есть gif файл с именем 1234567.gif
мне надо запустить другой батник с параметром 1234567,
короче как считать имя файла
Автор: Nagual
Дата сообщения: 29.03.2007 13:29
AndreyDanilik
for /f %%a in ("1234567.gif") do echo %%~na сценарий
for /f %a in ("1234567.gif") do echo %~na команда
Автор: GORA2
Дата сообщения: 30.03.2007 07:23
Знатоки бат файлов, подскажите:
1 У меня работает
Код: set /a summ=SFXsize+delta
set /a Hpers=delta*100/summ
set /a Lpers=delta*1000/summ-Hpers*10
Автор: igor_andreev
Дата сообщения: 30.03.2007 12:30
GORA2

Цитата:
а так не работает

У меня оба примера почему-то работают

Цитата:
Можно ли из бат файла узнать текущее разрешение экрана?

Стандартно - только используя WSH. Если религией\родителями\начальником не возбраняется использовать сторонние утилиты, то в шапке есть "Полезные ссылки", там cmdow.exe, а на ейной домашней странице есть "Batch file to retrieve display resolution". Или scrnres.exe с примером батника http://www.jsifaq.com/SF/Tips/Tip.aspx?id=08621

Цитата:
3 Здесь где то находил ссылку на некий компилятор для бат файлов, но ссылка на него дохлая.

В гугле набери что-нить типа "compile batch file", полно всяких прог найдешь


Автор: Nagual
Дата сообщения: 30.03.2007 13:27
igor_andreev
сам ищю давно нормальный компилятор, но пока самый лучший, что нашел дает размер модуля 50 кб, это многовато, может ты знаешь более менее нормальный по размерам откомпилированного файла криптор?
Автор: igor_andreev
Дата сообщения: 30.03.2007 14:10
Nagual
В Exescript версии 2.1.1 (случайно валяется у меня такая) модуль script.pe весит 8.5 Кб. Если заменить иконку в нем ResHacker-ом на иконку стандартного консольного приложения, то будет добавлять к батнику 5 Кб. Тема в варезнике есть, могу там эту версию выложить, если не найдешь (сам наверное знаешь на каких сайтах искать )

Сам иногда пользовался cmd2exe, у нее особо никаких функций нет, даже код не скрывает, но мне нужна была тулза, которая бы передавала батнику(его почти все проги в TEMP создают) свое местонахождение, чтобы прочитать ini-iшник рядом с exe. А то в батнике %0 не так, как надо отрабатывали. Вроде как обещали в Exesript версии 3 сделать такую функциональность, в качестве рабочей папки задать ту, где экзешник лежит, не пробовал еще.
Автор: Nagual
Дата сообщения: 30.03.2007 15:57
igor_andreev
аха 8.5 кб приемлемо, иконку замочим или заменим, если надо , кинулся искать, если не найду дам знать

Добавлено:
только недавно тестил exescript 3.0.0.0 там размер ~ 50 кб
Автор: euheny
Дата сообщения: 31.03.2007 02:53
Не знаю занимался ли кто из Вас работой с реестром , но перед мной стоит такая задача:
Нужно из реестра считать данные и заменить их в зависимости от условий , потом благополучно записать назад.Метод должен быть автоматическим.
Реальный пример:
В HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices
\DosDevices\С:
нужно заменить на
\DosDevices\Y:
Остальные параметры , типы значений , как и сами они этого ключа должны остаться прежними.
Автор: Nagual
Дата сообщения: 31.03.2007 03:41
euheny
REG QUERY /?
REG ADD /?
REG DELETE /?
REG COPY /?
REG SAVE /?
REG RESTORE /?
REG LOAD /?
REG UNLOAD /?
REG COMPARE /?
REG EXPORT /?
REG IMPORT /?
igor_andreev
нашел в андеграунде версию 2.1.1 от охотника на людей, но вылетает у меня при добавлении файла.
а так в демоверсии добавил сценарий размером 692 байт (692 байт) и размер файла на выходе составил 16 кб имхо про третью версию молчу, ибо а зачем нам кузнец?
Автор: Elroir
Дата сообщения: 31.03.2007 04:01
euheny
Так как я понял:
1. Читаем значение и тип \DosDevices\С:
2. Создаем \DosDevices\Y: с тем же значением и типом данных.
3. Удаляем \DosDevices\С: (закомментировано в батнике)


Код:
@echo off
setlocal
set "first_key=\DosDevices\C:"
set "second_key=\DosDevices\Y:"
rem Читаем значение и тип первого ключа
for /f "usebackq skip=2 tokens=2,3" %%a in (`"reg query HKLM\SYSTEM\MountedDevices /v %first_key%"`) do (
set "first_key_type=%%a"
set "first_key_value=%%b"
)
rem Записываем иx в второй ключ. Если он не существует - создаем его.
reg add HKLM\SYSTEM\MountedDevices /v %second_key% /t %first_key_type% /d %first_key_value% /f
rem Если надо - удаляем первый ключ
rem reg delete HKLM\SYSTEM\MountedDevices /v %second_key% /f
Автор: euheny
Дата сообщения: 31.03.2007 04:40
Nagual
Просто не серьёзно как-то
Elroir
Спасибо , что откликнулся - буду разбираться
Автор: Elroir
Дата сообщения: 31.03.2007 10:21
euheny
Пожалуйста.
Я делал без сравнения, просто потому,что не совсем понял, что с чем надо сравнивать.
Если есть вопросы - милости просим
Автор: SPV_Ed
Дата сообщения: 31.03.2007 22:02
Как в пакетном файле в цикле for /f в качестве разделителя задать символ ковычки?
"delims="" и "delims=^"" не подходит...
Автор: igor_andreev
Дата сообщения: 31.03.2007 22:12
Угу, присоединяюсь в вопросу SPV_Ed, может получилось у кого? Вроде как нельзя этого сделать. Как-то часа три-четыре наверно грохнул на попытку сделать кавычку разделителем, ничего не вышло

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Сбой активации XP sp2


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