|
Full Version: Getting My Ip In Winxp Console
is there any way to get my IP in the XP console to use it in a batch file?
ummm, ipconfig? dunno if that's what ur looking for tho.
Start > Run > cmd
Then type 'ipconfig /all' and there you go. When you have a router installed it only shows your lan ip, for getting wan ip you have to use some web cgi environmentable or check out your router
yeah i know ip config, but how do i get my ip in a variable within a batch file?
basically, i need something that ONLY gives my IP so that i can use it in the batch file!
I think this is what you're looking for.
Batch Networking Tutorial --------------------------------------------------------------------------------------------- To find your IP address in a batch file, you must first find your IP address and get it to appear on a line: Under NT (and some Win9x machines) you can run the IPCONFIG program and parse the results: ipconfig.exe | find "IP Address" | find /v " 0.0.0.0" Windows 95 and 98 have a different program WINIPCFG. Here's how to do it in Win95: winipcfg.exe /batch %temp%\winipcfg.out type %temp%\winipcfg.out | find "IP Address" | find /v " 0.0.0.0" Another possibility that works on both types of machines is to use ARP: ping.exe -n 1 -i 1 -w 1 www.microsoft.com arp.exe -a | find "Interface" If you have NT, let me stop you right here. I do NOT write NT batch code, but I slapped this little bit together. This will put your NT IP address into a file named "ip3.txt": ipconfig | find "IP Address" > ip1.txt for /f "tokens=1-2 delims=:" %i in (ip1.txt) do echo %j> ip2.txt for /f "tokens=1-3 delims=." %i in (ip2.txt) do echo %i.%j.%k.21> ip3.txt You'll find that Win9x solutions will be very moch more complicated because Win9x doesn't have the powerful NT "for" command options. Now, on to those complicated Win9x solutions... Now that you have the IP on a line, you have to extract it from all the other words on the line. This is easily done by constructing two other files. One of these files is a "line fragment" (a single line with NO line termination characters), while the other file is a separate batch file. In this case, I'll use a batch file named "temp2.bat", so I'll need a line fragment that has "call temp2.bat " (without the quotes but WITH the trailing space) in it. While you could make the fragment ahead of time (see http://www.ericphelps.com/batch/lines/frag-man.htm) I'll show code here which will make the fragment as needed. The fragment will be called "temp.txt": :: Make a line fragment :: See http://www.ericphelps.com/batch/lines/frag-dbg.htm echo e 100 "call temp2.bat "> script echo rcx>> script echo f>> script echo n temp.txt>> script echo w>> script echo q>>script debug < script > junk del script del junk Assuming we have the fragment, we need to put the IP data on the end of the fragment and rename it as a batch file. Using the NT example above (because it's the shortest): copy temp.txt temp1.bat > junk ipconfig.exe | find "IP Address" | find /v " 0.0.0.0" >> temp1.bat I redirect the output of commands whose outputs I don't want to see into "junk". Under Win9x, I could have redirected into "nul", but that just creates a file under NT. So I opt for uniformity and let a file named "junk" get created. I'll delete it later. Let's recap. Right now we have one pice of code that makes the fragment. Another piece puts the IP on the fragment as "temp1.bat". So let's peek at what is typically in "temp1.bat": call temp2.bat IP Address. . . . . . . . . : 147.132.1.151 Obviously, when we run temp1.bat, it's going to try to call something called temp2.bat. And it will pass the rest of the line as arguments. The first argument is "IP". the second is "Address.", all the way to the twelfth argument which is "147.132.1.151". So our temp2.bat will be in the unique position of being able to isolate the IP address. Unfortunately, we can't access variables higher than 9, so we'll have to shift three times to move 12 down to 9. Here's what could be in temp2.bat: shift shift shift set IP=%9 We can either pre-build our temp2.bat, or we can create it like this: echo shift> temp2.bat echo shift>> temp2.bat echo shift>> temp2.bat echo set %%9>> temp2.bat If we pre-build everything, we'll need the main batch file, the fragment (temp.txt), and the working file (temp2.bat). But I think it's simpler to go for a single file solution. Here is all the above sample code together in one file: @echo off :: Make a line fragment "temp.txt" echo e 100 "call temp2.bat "> script echo rcx>> script echo f>> script echo n temp.txt>> script echo w>> script echo q>>script debug < script > junk del script :: Make the working file "temp2.bat" echo shift> temp2.bat echo shift>> temp2.bat echo shift>> temp2.bat echo set IP=%%9>> temp2.bat :: Run the command that finds the IP and create "temp1.bat" copy temp.txt temp1.bat > junk ipconfig.exe | find "IP Address" | find /v " 0.0.0.0" >> temp1.bat :: Run the temp1.bat, which runs temp2.bat, which sets the IP variable call temp1.bat :: Remove temporary files del temp1.bat del temp2.bat del temp.txt del junk :: Display the result echo Your IP is %IP% As usual, no guarantee that the above code will work on NT because I tested it under Win95. Here's the same batch file modified for the Windows 9x "winipcfg" program: @echo off :: Make a line fragment "temp.txt" echo e 100 "call temp2.bat "> script echo rcx>> script echo f>> script echo n temp.txt>> script echo w>> script echo q>>script debug < script > junk del script :: Make the working file "temp2.bat" echo shift> temp2.bat echo shift>> temp2.bat echo shift>> temp2.bat echo set IP=%%9>> temp2.bat :: Run the command that finds the IP and create "temp1.bat" copy temp.txt temp1.bat > junk winipcfg.exe /batch %temp%\winipcfg.out type %temp%\winipcfg.out | find "IP Address" | find /v " 0.0.0.0" >> temp1.bat :: Run the temp1.bat, which runs temp2.bat, which sets the IP variable call temp1.bat :: Remove temporary files del temp1.bat del temp2.bat del temp.txt del junk del %temp%\winipcfg.out :: Display the result echo Your IP is %IP% As you can see, exactly the same except for the two lines needed for winipcfg. Now here it is modified to use the ARP program: @echo off :: Make a line fragment "temp.txt" echo e 100 "call temp2.bat "> script echo rcx>> script echo f>> script echo n temp.txt>> script echo w>> script echo q>>script debug < script > junk del script :: Make the working file "temp2.bat" echo set IP=%%2> temp2.bat :: Run the command that finds the IP and create "temp1.bat" copy temp.txt temp1.bat > junk ping.exe -n 1 -i 1 -w 1 www.microsoft.com > junk arp.exe -a | find "Interface" >> temp1.bat :: Run the temp1.bat, which runs temp2.bat, which sets the IP variable call temp1.bat :: Remove temporary files del temp1.bat del temp2.bat del temp.txt del junk :: Display the result echo Your IP is %IP% Finally, you may get an error about being out of environment space whenever you try to run a batch file that sets variables. The easiest solution is to not set the variable! For example, the temp2.bat could be modified from this: echo set IP=%%2> temp2.bat to this: echo echo Your IP is %%2> temp2.bat Of course, you'd substitute %%9 for the %%2 I show if you used the first two (IPCONFIG or WINIPCFG) examples. You also wouldn't need the last two lines in the code: :: Display the result echo Your IP is %IP% because the display would be handled in temp2.bat. ------------------------------------------------------------------------------------------- Ciau... digitalk2003
wow, thx for the answer man! now thats what i call community help
better mention... if you're behind a router, you'll show up as an internal IP.. to see your external one really simple, go to www.whatismyip.com (simple name to remember)
Also I think someone should make a website or page just response external IP address.
So we can write a small exe to do that. Also you can write a smiple vbscript and run at command line which works with whatismyip.com
I wrote a small .vbs to show ip in console or normal, working with www.whatismyip.com
I attached file, also if you want you can simly compile this code by VB.NET or any other Visual Basic For console use; c:\>cscript myip.vbs Also you can execute by double click. I hope this helps.
xmm...sorry i didnt read all replys...
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
|
|