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

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

Автор: travian
Дата сообщения: 10.09.2010 17:12
Здрасте всем.
Нужен батник, для определения моего внешнего IP. Нашёл такой вариант:

Код: For /F "Tokens=2 Delims=:" %%i In ('IPConfig^|Find "IPv4"') Do Set IP=%%~i
Echo %IP%
Автор: bomzzz
Дата сообщения: 10.09.2010 17:25
169 это твой локальный ип, а 109 это внешний шлюза, от твоего компа до шлюза как до луны. чтоб определялся адрес шлюза нужно определять по определялся находящейся на внешнем сервере
http://ipid.shat.net/iponly/
скачай эту хтмл страницу вбс скриптом из нее получишь свой внешний ип

пример скрипта

Цитата:

Title="Download"
result = InputBox("Введите ссылку", Title, "http://")
If result="" Then
MsgBox "Отмена"
Else
name = Right(result, Len(result) - InstrRev(result, "/"))
IF name = "" Then name="noname.html"
Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP")
oXMLHTTP.Open "GET", result, 0
oXMLHTTP.setRequestHeader "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"
oXMLHTTP.Send
Set oADOStream = CreateObject("ADODB.Stream")
oADOStream.Mode = 3 'разрешение на чтение и запись
oADOStream.Type = 1 'тип данных - Binary
oADOStream.Open
oADOStream.Write oXMLHTTP.responseBody
oADOStream.SaveToFile name, 2
MsgBox "Файл " & result & " сохранён."
End If

или можно wget-ом или cUrl-ом это сделать
Добавлено:
Free_Soft

вообще не работают или эту кодировку не понимают?
Автор: Free_Soft
Дата сообщения: 10.09.2010 17:52
bomzzz
Кодировку скорее всего. да еще под Win 7 DISPLAY.COM не запускается...
Автор: bomzzz
Дата сообщения: 10.09.2010 17:52
у меня все работает. дос кодировка из форума не скопируется


ECHO OFF
COLOR 9F
CLS
display.com
rem doskey
set /p my=Enter your word:
echo %my%
DIR /A:D | FIND "Ї Ї®Є"
FOR /F %%I IN ('DIR /A:D ^| FIND "Ї Ї®Є"') do echo %%I
pause

Добавлено:
Free_Soft
win 7 известное г. под ним ничего не запускается
Автор: travian
Дата сообщения: 10.09.2010 18:18
bomzzz
А как бы всё это автоматизировать, чтобы можно было определить IP, занести его в переменную, а затем подставить эту переменную, пусть хоть в "echo"? И всё это вообще без каких-либо окон и уж тем более вмешательства пользователя.
Автор: bomzzz
Дата сообщения: 10.09.2010 18:20
скрипт перепиши. это пример скрипта, как скачать файл из инета.
или wget bспользуй

Добавлено:

result = "http://ipid.shat.net/iponly/"
name="noname.html"
Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP")
oXMLHTTP.Open "GET", result, 0
oXMLHTTP.setRequestHeader "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"
oXMLHTTP.Send
Set oADOStream = CreateObject("ADODB.Stream")
oADOStream.Mode = 3 'разрешение на чтение и запись
oADOStream.Type = 1 'тип данных - Binary
oADOStream.Open
oADOStream.Write oXMLHTTP.responseBody
oADOStream.SaveToFile name, 2

вот так попробуй. уже давно ниче на вбс не делал в упор ничего не помню
Автор: travian
Дата сообщения: 10.09.2010 18:25
Изменил сообщение.
Извиняюсь, не заметил "добавлено". Сейчас посмотрю
Автор: bomzzz
Дата сообщения: 10.09.2010 18:25
в теме про вбс скрипты спроси

Добавлено:
если бы ты начал делать скрипт вбс, ты бы начал искать как скачать файл пример в инете, вот я тебе его сразу нашел, а писать самому надо

Добавлено:
http://forum.ru-board.com/topic.cgi?forum=33&bm=1&topic=1491&start=1740#lt

Добавлено:
travian
у меня работает. не очень быстро. поищи быстрее сервер

http://bomz-co.narod.ru/MYIP.exe

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

Добавлено:
ECHO OFF
COLOR 9F
CLS
CALL MYIP.EXE
FOR /F " DELIMS=<" %%I IN ('FINDSTR /B [0-9] MYIP.TXT') DO ECHO %%I
DEL MYIP.TXT
pause
Автор: travian
Дата сообщения: 10.09.2010 19:04
bomzzz
Большое спасибо
Автор: bomzzz
Дата сообщения: 10.09.2010 19:07

сервер фиговый, дохнет постоянно. но я другого не знаю чтоб ничего лишнего не было
Автор: bomzzz
Дата сообщения: 10.09.2010 21:27
Free_Soft
clip переделал - он теперь не делает ошибку если поток превышает размер заданного буфера, а копирует до размера - 1 байт
Автор: Free_Soft
Дата сообщения: 10.09.2010 22:24
bomzzz
ок. где можно посмотреть?
Автор: bomzzz
Дата сообщения: 10.09.2010 22:26
http://bomz-co.narod.ru/ENHANCER.zip
сюда запихал вроде нет ошибок
Автор: 1nasty1
Дата сообщения: 11.09.2010 00:28
Подскажите, пожалуйста, как можно реализовать такую непростую задачу.
Пользователь запускает ярлык. По сети стартует Vmware машина с запущенным VNC (port :5900) После этого стартует RealVNC на том же порту (:5900). порты vmware предварительно настроены и известны. После закрытия окна RealVNC vmware машина тоже закрывается.
Автор: bomzzz
Дата сообщения: 11.09.2010 00:32
пользователь безрукий что ли?
Автор: 1nasty1
Дата сообщения: 11.09.2010 00:40

Цитата:
пользователь безрукий что ли?

) как правило. Они работают с несколькими машинами. 4 машины на 5 пользователей. Держать запущенными все одновременно (20 шт.) невозможно. Допускаю, что реализовать на bat файлах такое также невозможно.

Добавлено:
start.bat

Цитата:
C:
cd "\Program Files\VMWare\VMware Server"
call vmware-cmd "C:\Virtua\User1\program1.vmx" start
cd \


stop.bat

Цитата:
C:
cd "\Program Files\VMWare\VMware Server"
call vmware-cmd "C:\Virtua\User1\program1.vmx" stop
cd \


для запуска по сети можно использовать
Цитата:
%~dp0


А вот как запускать через .bat RealVNC (можно любой VNC - не принципиально) на определенном порту и приурочить закрытие Vmvare машины закрытию окна VNC я не знаю.

Автор: bomzzz
Дата сообщения: 11.09.2010 01:21
не особо знаю что такое vnc но то что это можно - точно.

Добавлено:
аааааааааааааа RealVNC - это удаленный рабочий стол что ли???

Добавлено:
ну он мне не понравился, я в основном тим вьювером пользуюсь и ами админом.
а че с ним какое сложности? у него командная строка есть?
цифирки в окно ввести надо? но это лучше макросами или вбс скриптами делать. че точно надо делать.

Добавлено:
стандартный виндовский рабочий стол кажется умеет в случае использования пароля коннектится к удаленной машине так что не требует на удаленной машине нажатия никаких подтверждающих окон
Автор: wolf0425
Дата сообщения: 11.09.2010 01:30
travian

Цитата:
Нужен батник, для определения моего внешнего IP.
например так:
Код: For /f %%a in ('wget -q -O - http://www.netikus.net/show_ip.html ') do set "ip=%%a"
Автор: 1nasty1
Дата сообщения: 11.09.2010 02:17
bomzzz
Поддержка командной строки точно есть в uVNC http://www.uvnc.com/install/cmdline.html
Автор: bomzzz
Дата сообщения: 11.09.2010 02:31
ну и делай через нее
Автор: 1nasty1
Дата сообщения: 11.09.2010 03:18
bomzzz
Если бы я мог сделать, я бы здесь не спрашивал. Не хватает мне чего-то. Не знаю правда, чего больше - опыта, или знаний? Надеялся, что здесь все-таки есть специалисты, способные решать любые вопросы в .bat, включая и мой с минимальными временными затратами. Я же состарюсь за этой задачей ). Но я успел оценить Ваш юмор, а также креативность и способность быстро решать все поставленные задачи. Правда, пока до командной строки дело не дошло, но и на том спасибо.
All
еще раз напомню про условия:
1) по сети надо запускать vmware машину, на которой уже автоматом стартует vnc сервер на 5900 порту. VNC-сервер можно включить прямо в меню Vmware, там же предварительно настроен порт. Напр. запускаем машину на сервере 192.168.1.10.
2) секунд через 5-10 стартует uVNC с автоконнектом на 192.168.1.10:5900
3) Закрываем окно uVNC, - вместе с ним закрывается Vmware машина.
Автор: bomzzz
Дата сообщения: 11.09.2010 03:25
1nasty1
но это тема то про батники, а не конкурс на знание командной строки отдельных программ, разве SED только тут прописался.

<имя программы> <параметры коммандной строки>

вот это все что касается батников в твоем вопросе

Добавлено:
http://www.uvnc.com/install/cmdline.html - вот тута все написькано. если по какой то конкретной команде вопрос ну спроси может и ответит кто даже если программой не пользовался никогда

Добавлено:

Цитата:

-autoreconnect
Is used in conjunction with the -connect switch when having a server "back-connect" to a listening viewer. You can use it in a batch file for your clients that are behind a firewall that is not under your control. The batch file looks something like this:
"c:\program files\ultravnc\winvnc" -autoreconnect -connect 12.34.56.78
On the local computer run the viewer in "listening" mode, and have someone on the server end run the batch file. The -autoreconnect will make the server end attempt to reconnect to the listening viewer if the connection drops or is closed. It will immediately reconnect to the listening viewer if the session is closed. Close the listening viewer altogether in order to stop the server end from "autoreconnecting" to your computer. The server attempts to "autoreconnect" for only a few seconds.
Note that this "autoreconnect" param must be before the "connect" one on the command line!
-kill
Kills any already running copy of WinVNC.


Добавлено:
это по поводу коннекта, а по поводу вьювера, тружно что то определенное понять если программой не пользовался. она у меня не заработала, может делал чета не так, особо не заморачивался, ами админ и тим вьювер гораздо проще

Добавлено:
http://www.pcgood.ru/soft/realvnc/
Автор: LunQ
Дата сообщения: 12.09.2010 12:44
Программисты, помогите автоматизировать задачу.
Можно как-то строку начинающуюся с User в файле Temp.txt дописать к тексту в файле Result.txt, или, на худой конец, текст файла Temp.txt добавить к тексту файла Result.txt?
Автор: ComradG
Дата сообщения: 12.09.2010 12:59
LunQ
Тебе что, в начало текстового файла нужно впихнуть некоторую сточку? Если да, то в батниках такое трудно провернуть, но вот тебе
[more=vbs'ка]Const ForReading = 1
Const ForWriting = 2

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("C:\твой_файл.txt")
strContents = objFile.ReadAll
objFile.Close
strFirstLine = "Это строка, которую нужно вставить в файл!"
strNewContents = strFirstLine & vbCrLf & strContents
Set objFile = objFSO.OpenTextFile("C:\твой_файл.txt", ForWriting)
objFile.WriteLine strNewContents
objFile.Close[/more], которая должна помочь, если требуется сделать именно это. Если нет, то поясни что к чему.
Автор: LunQ
Дата сообщения: 12.09.2010 13:14
ComradG
Мне нужно в конец или начало текста файла впихнуть строку из другого файла, содержание которой изменчиво, но начинается она со слова User.
Как дописать конкретную строку понятно: echo текст >> Result.txt
Автор: ComradG
Дата сообщения: 12.09.2010 13:18
LunQ
А эта "изменчивая" строка сама где находится: в начале, в середине или в конце? Или файл, из которого нужно эту самую строку вставить только и состоит что из этой "изменчивой" строки?
Автор: LunQ
Дата сообщения: 12.09.2010 13:25
ComradG
Там много строк, нужное предложение (со словом User) находится в середине текста (начинается с красной строки и заканчивается).
Пока разобрался как весь текст дописать в другой файл:
for /f "tokens=*" %%i in (Temp.txt) do echo %%i >> Result.txt
Автор: ComradG
Дата сообщения: 12.09.2010 13:38
LunQ
Длинно пишешь (я про фор с последующим перенаправлением), но это не по теме. Если же быть по теме, то для нахождения нужных строк имеется два варианта: если слово User встречается только в нужных тебе строках, то тебе нужно проделать что-то вроде findstr /x User >> Result.txt; если не только в нужных строках, поколдуй с findstr /n (или что-то типа того).
Автор: NIKZZZZ
Дата сообщения: 12.09.2010 13:40
LunQ

Примерно так:

Код: for /f "tokens=1,*" %%i in (Temp.txt) do if "%%i"=="User" echo %%i %%j >> Result.txt
Автор: ComradG
Дата сообщения: 12.09.2010 13:51
NIKZZZZ
Тоже вариант, но бага в том, что если даже указать delims= , а пробел не во всех сроках после User, то часть из того будет потеряна. Да, кстати, ты не знаешь как без помощи vbs в начало файла строки писать? А то я только и умею оное делать через vbs.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Windows 7 Starter


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