Para encontrar o endereço IP em um arquivo de lote, você deve
primeiro encontrar o seu endereço IP e buscá-la para aparecer na
uma linha:
Nos termos do NT (e algumas máquinas Win9x) você pode executar o
IPCONFIG programa e analisar os resultados:
ipconfig.exe | find "Endereço IP" | find / V "0.0.0.0"
Windows 95 e 98 têm um programa diferente
WINIPCFG. Veja como fazer isso no Win95:
winipcfg.exe / lote% temp% \ winipcfg.out
digite% temp% \ winipcfg.out | find "Endereço IP" | find / V "0.0.0.0"
Outra possibilidade que funciona em ambos os tipos
das máquinas é a utilização ARP:
Ping.exe n-1-i 1-w 1 www.microsoft.com
arp.exe-a | find "Interface"
Se você tiver NT, deixe-me parar você aqui. NÃO
NT lote escrever código, mas me bateu essa pouco
junto. Isto irá colocar o seu endereço IP no NT
um arquivo chamado "ip3.txt":
ipconfig | find "Endereço IP"> 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
Você verá que Win9x soluções será muito moch
Win9x mais complicado porque não tem o poderoso
NT "para" comando opções.
Agora, sobre a essas soluções Win9x complicado ...
Agora que você tem o IP em uma linha, você tem que
extraí-lo de todas as outras palavras sobre a linha.
Isso é facilmente feito através da construção dois outros arquivos.
Um desses arquivos é uma "linha fragmento" (a única
linha com a linha NO rescisão caracteres), enquanto
o outro arquivo é um arquivo separado do lote. Neste caso,
Vou utilizar um ficheiro batch chamado "temp2.bat", so I'll
fragmento necessidade de uma linha que tem "apelo temp2.bat"
(sem as aspas, mas com a rasteira espaço), em
ele. Enquanto você poderia fazer o fragmento antes do tempo
(ver http://www.ericphelps.com/batch/lines/frag-man.htm)
Vou mostrar aqui código que irá fazer o fragmento como
necessário. O fragmento, será designada "temp.txt":
echo e 100 "temp2.bat chamada"> script
echo rcx>> script
echo f>> script
echo n temp.txt>> script
echo w>> script
echo q>> script
debug "script" lixo
del script
do lixo
Supondo que temos o fragmento, é preciso colocar o IP
dados sobre o fim do fragmento e renomeie-o como um lote
arquivo. Usando o exemplo acima NT (porque é o mais curto):
cópia temp.txt temp1.bat> lixo
ipconfig.exe | find "Endereço IP" | find / V "0.0.0.0">> temp1.bat
Eu redirecionar a saída de comandos cujos resultados não
quero ver em "junk". De acordo com Win9x, eu poderia ter redirecionado
em "nul", mas que só cria um arquivo com o NT. Então eu optar
de uniformização e deixa um arquivo chamado "lixo" obter criado. I'll
apagá-la mais tarde.
Vamos recapitular. Agora temos um pice de código que faz
o fragmento. Outra peça coloca o IP no fragmento como
"temp1.bat". Portanto, vamos espreitar o que está normalmente em "temp1.bat":
chamada temp2.bat Endereço IP. . . . . . . . . : 147.132.1.151
Obviamente, quando se corre temp1.bat, ele vai tentar ligar
algo chamado temp2.bat. E vai passar o resto da
linha de argumentação. O primeiro argumento é "IP". o segundo é
"Endereço"., Todo o caminho até o décimo segundo argumento é que
"147.132.1.151". Por isso, a nossa temp2.bat será o único em
posição de ser capaz de isolar o endereço IP.
Infelizmente, não podemos acessar variáveis superior a 9, de modo
teremos que deslocar três vezes para mover 12 estabelece a 9.
Veja o que poderia estar em temp2.bat:
deslocar
deslocar
deslocar
definir IP =% 9
Podemos construir a nossa pré-temp2.bat, ou podemos criá-lo
como este:
echo turnos> temp2.bat
echo turnos>> temp2.bat
echo turnos>> temp2.bat
echo set%% 9>> temp2.bat
Se pré-construir tudo, vamos precisar do arquivo principal do lote,
o fragmento (temp.txt), e os grupos de trabalho (arquivo temp2.bat).
Mas eu acho que é mais simples para ir para um único arquivo solução.
Aqui está todo o código de exemplo acima juntos em um arquivo:
@ echo off
:: Faça uma linha fragmento "temp.txt"
echo e 100 "temp2.bat chamada"> script
echo rcx>> script
echo f>> script
echo n temp.txt>> script
echo w>> script
echo q>> script
debug "script" lixo
del script
:: Faça o arquivo de trabalho "temp2.bat"
echo turnos> temp2.bat
echo turnos>> temp2.bat
echo turnos>> temp2.bat
echo IP =%% fixado 9>> temp2.bat
:: Executar o comando que verifica o IP e criar "temp1.bat"
cópia temp.txt temp1.bat> lixo
ipconfig.exe | find "Endereço IP" | find / V "0.0.0.0">> temp1.bat
:: Execute o temp1.bat, que vai temp2.bat, que define o IP variável
chamada temp1.bat
:: Remover arquivos temporários
del temp1.bat
del temp2.bat
del temp.txt
do lixo
:: Mostrar o resultado
echo O seu IP é% IP%
Como é habitual, nenhuma garantia de que o código acima irá trabalhar em
NT porque Eu testei-o com Win95. Aqui está o mesmo lote
arquivo modificado para o Windows 9x "winipcfg" programa:
@ echo off
:: Faça uma linha fragmento "temp.txt"
echo e 100 "temp2.bat chamada"> script
echo rcx>> script
echo f>> script
echo n temp.txt>> script
echo w>> script
echo q>> script
debug (script) lixo
del script
:: Faça o arquivo de trabalho "temp2.bat"
echo turnos> temp2.bat
echo turnos>> temp2.bat
echo turnos>> temp2.bat
echo IP =%% fixado 9>> temp2.bat
:: Executar o comando que verifica o IP e criar "temp1.bat"
cópia temp.txt temp1.bat> lixo
winipcfg.exe / lote% temp% \ winipcfg.out
digite% temp% \ winipcfg.out | find "Endereço IP" | find / V "0.0.0.0">> temp1.bat
:: Execute o temp1.bat, que vai temp2.bat, que define o IP variável
chamada temp1.bat
:: Remover arquivos temporários
del temp1.bat
del temp2.bat
del temp.txt
do lixo
del% temp% \ winipcfg.out
:: Mostrar o resultado
echo O seu IP é% IP%
Como você pode ver, exactamente o mesmo, excepto para os dois
linhas necessárias para winipcfg. Agora aqui é modificado para
utilizar o ARP programa:
@ echo off
:: Faça uma linha fragmento "temp.txt"
echo e 100 "temp2.bat chamada"> script
echo rcx>> script
echo f>> script
echo n temp.txt>> script
echo w>> script
echo q>> script
debug
del script
:: Faça o arquivo de trabalho "temp2.bat"
echo conjunto IP =% 2%> temp2.bat
:: Executar o comando que verifica o IP e criar "temp1.bat"
cópia temp.txt temp1.bat> lixo
Ping.exe n-1-i 1-w 1 www.microsoft.com> lixo
arp.exe-a | find "Interface">> temp1.bat
:: Execute o temp1.bat, que vai temp2.bat, que define o IP variável
chamada temp1.bat
:: Remover arquivos temporários
del temp1.bat
del temp2.bat
del temp.txt
do lixo
:: Mostrar o resultado
echo O seu IP é% IP%
Finalmente, você pode obter um erro sobre estar fora de
ambiente espacial, sempre que você tentar executar um lote
arquivo que define variáveis. A solução mais fácil é
ao não definir a variável! Por exemplo, o temp2.bat
poderia ser modificado a partir do presente:
echo conjunto IP =% 2%> temp2.bat
para isso:
echo echo O seu IP é%% 2> temp2.bat
Naturalmente, você poderia substituir%% 9% para os 2%, se eu mostrar
usou os dois primeiros (IPCONFIG ou WINIPCFG)
exemplos. Você também não precisaria as duas últimas linhas
no código:
:: Mostrar o resultado
echo O seu IP é% IP%
porque o visor seria tratado em temp2.bat.
FONTE
28 de dez. de 2008
Assinar:
Postar comentários (Atom)
0 comentários:
Postar um comentário