Προς το περιεχόμενο

IPconfig σε Batch files - Πώς θέτω την IP ως μεταβλητή


LiKBeAsT

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπερα..

 

σε ενα Batch αρχειο με την εντολη IPconfig εμφανίζει την ΙΡ κτλ..Πως μπορω να θεσω αυτη την IP που εμφανιζεται ως μεταβλητη..?:confused:

 

thx :-D :-D

Δημοσ.

Δεν φανταζομαι να εννοεις οτι θελεις να δωσεις IP address σε μια καρτα δικτυου με το IP Config. Αυτο γινεται με το netsh

 

Αν εννοεις να αποσπασεις την IP που εμφανιζεται και να την αποθηκευεσεις σε μια string, χρησιμοποιησε το παρακατω: (αγγλικα windows)

 

>
@echo off
setlocal
for /f "tokens=1,2,3,4* delims=:" %%a in ('ipconfig ^| findstr Address') do set ipaddress=%%b
set ipaddress=%ipaddress:~1%
echo %ipaddress%
pause

Δημοσ.

τι εννοεις σε μια string..?σαν variable..?ναι αυτο θελω..αλλα εχω ελληνικα windows...

 

EDIT:

Παραθετω μια εικονα για να δεις τις ονομασιες στα ελληνικα..αν χρειαζονται...

post-43052-129062946427_thumb.jpg

Δημοσ.

Εκει που λεω findstr Address καντο findstr IP. (με την τελεια στο τελος). Το findstr ειναι case sensitive οποτε και τη λεξη IP. με κεφαλαια γραφτην.

Δημοσ.

Ευχαριστω πολυ!δουλευει μια χαρα!!

 

μου εξηγεις λιγακι αν μπορεις και τις εντολες για να μαθαινουμε...

Δημοσ.

Καταρχην οποιαδηποτε εντολη δεν ξερεις, με ενα /? μαθαινεις τι κανει.

Κανε και μια βολτα στο www.ss64.com να τις δεις μαζεμενες.

 

ipconfig | findstr IP.

 

Το παραπανω σου εμφανιζει στην οθονη ολες τις γραμμες που θα εβλεπες απο το ipconfig που περιεχουν την ακολουθια IP. και μονο αυτες. Μεσα στο batch, επειδη ειναι μεσα σε ' ', πρεπει να μπει και ενα ^ πριν το |. Το ^ ειναι escape character στα batch files, αν και δεν μπορω να καταλαβω γιατι μπερδευεται στη συγκεκριμενη περιπτωση, αν δεν το βαλεις δεν δουλευει.

 

for /f "tokens=1,2,3,4* delims=:" %%a in ('ipconfig ^| findstr Address') do set ipaddress=%%b

Τη γραμμη που πηρες απο την εντολη με το ipconfig, τη σπαει σε κομματια (Tokens) με κριτηριο το : (απο το delims=:).

Τα tokens (1,2,3,4 η οσα πουμε) μπορουμε να τα χρησιμοποιησουμε ως %%a, %%b, %%c κ.ο.κ.

 

Το δευτερο Τoken εχει την IP. To πρωτο εχει το κομματι που λεει διευθυνση IP . . . . μεχρι (χωρις) το :.

Οποτε κανουμε set ipaddress=%%b

 

Επειδη ομως το δευτερο token εχει και space μπροστα, πρεπει να το ξεφορτωθουμε, οποτε:

set ipaddress=%ipaddress:~1%

To οποιο λεει, "παρε ολους τους χαρακτηρες της μεταβλητης ipaddress εκτος απο τον πρωτο και βαλτους στη μεταβλητη ipaddress

Δημοσ.

Αρχικα..σε ευχαριστω θερμα... :-)

 

με ενα /? μαθαινεις
ναι..αλλα δν ειναι παντα οτι καλυτερο..

 

1.to %a γιατι το βαζουμε...?Ειναι για να θεσουμε την αρχη του μετρηματος των tokens?

 

2.

escape character
τι είναι αυτο..?για να συνεχιζω σε αλλη σειρα την ιδια εντολη..?

 

3.Το | λειτουργει σαν συμβολο "συναληθευσης" κατα καποιο τροπο..?

 

4.

εκτος απο τον πρωτο
αυτο το κανει η εντολη :~1...?

 

5.το set εχει διαφορα απο το @Set...?

 

και αλλο ενα γενικο..

6.το /F τι ακριβως δηλωνει..?Ειναι και σε αλλες εντολες απο οσο ξερω...

 

7.Θα υπηρχε διαφορα αν βαλω "tokens=1* delims=:"..?τα 2,3,4 έχουν λόγο ή απλώς για να το καταλαβω...?

 

thx again..και συγνωμη για τις αποριες αλλα...ανθρωποι είμαστε...θελουμε να ξερουμε...:D

 

PS γινεται να αλλαξω το χρωμα σε μονο μια λεξη ή γραμμη..?

Δημοσ.
Αρχικα..σε ευχαριστω θερμα... :-)

 

ναι..αλλα δν ειναι παντα οτι καλυτερο..

 

1.to %a γιατι το βαζουμε...?Ειναι για να θεσουμε την αρχη του μετρηματος των tokens?

 

 

2.τι είναι αυτο..?για να συνεχιζω σε αλλη σειρα την ιδια εντολη..?

 

 

3.Το | λειτουργει σαν συμβολο "συναληθευσης" κατα καποιο τροπο..?

 

4.αυτο το κανει η εντολη :~1...?

 

5.το set εχει διαφορα απο το @Set...?

 

και αλλο ενα γενικο..

6.το /F τι ακριβως δηλωνει..?Ειναι και σε αλλες εντολες απο οσο ξερω...

 

7.Θα υπηρχε διαφορα αν βαλω "tokens=1* delims=:"..?τα 2,3,4 έχουν λόγο ή απλώς για να το καταλαβω...?

 

thx again..και συγνωμη για τις αποριες αλλα...ανθρωποι είμαστε...θελουμε να ξερουμε...:D

 

PS γινεται να αλλαξω το χρωμα σε μονο μια λεξη ή γραμμη..?

 

1) Ναι. Ειναι λιγο αυθαιρετο. Μπορεις να αρχισεις με αλλο γραμμα και τα τοκενς θα παιρνουν αυτο και τα επομενα γραμματα καθε φορα

 

2) To wiki το εξηγει πολυ καλυτερα απο εμενα

http://en.wikipedia.org/wiki/Escape_character

 

3) Ειναι το pipe. Το Output της μιας εντολης περνιεται σαν παραμετρος στην επομενη αντι να φανει στην οθονη. Οποτε το findstr τροφοδοτειται με τις 7-8 γραμμες text που βγαζει το ipconfig και αποφασιζει ποιες απο αυτες θα δειξει, δηλαδη αυτες που περιεχουν την ακολουθια IP.

 

4) θα σε παραπεμψω εδω

http://www.ss64.com/ntsyntax/varsubstring.html

 

5) Δεν ξερω. Δεν εχω παρατηρησει διαφορα μεταξυ τους

 

6 + 7) Παλι θα σε παραπεμψω

http://www.ss64.com/nt/for_cmd.html

 

Δεν ειναι οτι βαριεμαι να τα γραφω, αλλα απο εκει τα εμαθα και εγω και δεν μπορω να τα πω καλυτερα. Στο τελος της σελιδας εχει και links για τους αλλους τυπους for. Πηγαινε και εκει να δεις τις διαφορες. Πχ το /F ειναι για for που χρησιμοποιει output απο αλλη εντολη. for /L ειναι το κλασικο for loop με αριθμους που χρησιμοποιειται στις γλωσσες προγραμματισμου

 

Για το χρωμα σε μια γραμμη δεν ξερω αν και θα ειχε ενδιαφερον

Δημοσ.

> 5.το set εχει διαφορα απο το @Set...?

 

Το @ χρησιμοποιείται σε batch files για να ΜΗΝ εμφανίσει την ΙΔΙΑ την εντολή (δεν μιλάμε για το output της).

 

Δοκιμάστε με test1.bat

set a=123

 

και test2.bat

@set a=123

 

> Για το χρωμα σε μια γραμμη δεν ξερω αν και θα ειχε ενδιαφερον

 

Γίνεται, αλλά χρειάζεται πρόγραμμα. Π.χ. να φορτωθεί το ενσωματωμένο ANSI.SYS, που εκτός από χρώματα υποστηρίζει και μετακίνηση του κέρσορα.

Δημοσ.

2.Κατι μ λεει οτι απο εσενα θα το καταλαβω καλυτερα..γτ η wiki δν με βοηθησε..

 

Ευχαριστω πολυ και τους δυο..

Σχετικα με τη σελ..βοηθαει..αλλα οχι παντα..

πχ λέει FINDSTR Search for strings in files..απο αυτο δν καταλαβαινω αυτο π μ ειπες..αλλα οτι ψαχνει μεσα στα αρχεια..

Για αυτο και ρωταω!!

 

EDIT : οκ με το escape character!

 

Μια ακομη απορια..στο batch file π εκανα χρησημοποιουσα μεχρι τωρα ενα αρχειακι printip.exe π ειχα βρει και το αποιο εδινε σε μια γραμμη την ΙΡ σου..

οποτε εδινα την εντολη

For /F %%i in ('printip') Do Set IP=%%i

echo Current IP is %IP%

 

Καλυτερα να χρησημοποιω αυτο ή να βαλω μεσα στο batch την εντολη να περνει την ΙΡ μ απο τo ipconfig..?Υπαρχει καποιο πλεονεκτημα σε καποια περιπτωση..(εκτος του οτι το exe μπορει να εχει τπτ "κακο"..θεωρουμε πως δν εχει..)

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...