Ir ao conteúdo
  • Cadastre-se

Outro troca de ip por linha de comando


Posts recomendados

Bom dia pessoal

 

Gostaria de saber como faço para trocar ip de um computador porém necessito trocar da seguinte maneira:

 

se o ip do computador é 192.168.0.23 precisaria trocar para 172.27.0.23 por exemplo. Ou seja necessito trocar a faixa de ip mantendo o final.

 

Já tenho o comando para a troca do ip e do dns(colocarei os dados em caixa alta):

netsh interface ip set address name="NOME DAS CONEXÕES DE REDE" static IP MASCARA GATEWAY
netsh interface ip set dnsservers name="NOME DAS CONEXÕES DE REDE" static DNS PRIMARIO

 

e também uma variável que contem o nome do computador 

%computername%

 

Meu problema está sendo em pegar o final do ip nesse caso acima o 23 dele.

Link para o comentário
Compartilhar em outros sites

1 hora atrás, ricardo_br disse:

Você quer criar um arquivo batch que automatize isso?

Exatamente isso e sobre a execução seria localmente, com ip estático ou seja não posso usar o renew do ipconfig. Pensei em guarda a informação em arquivo usando o comando abaixo

ping -n 1 %computername% -4d>c:\name.txt

porém não sei como usar o arquivo texto em questão para isso. que é gravado ficando como abaixo:
 

Disparando TEC_01 [192.168.0.23] com 32 bytes de dados:
Resposta de 192.168.0.23: bytes=32 tempo<1ms TTL=128

Estat¡sticas do Ping para 192.168.0.23:
    Pacotes: Enviados = 1, Recebidos = 1, Perdidos = 0 (0% de
             perda),
Aproximar um n£mero redondo de vezes em milissegundos:
    M¡nimo = 0ms, M ximo = 0ms, M‚dia = 0ms

 

Link para o comentário
Compartilhar em outros sites

Para salvar o IP atual em uma variável chamada %MeuIP% você poderia usar o seguinte código:


for /f "delims=[] tokens=2" %%a in ('ping -4 -n 1 %computername%') do set MeuIP=%%a

Para salvar seu IP atual em um arquivo de texto chamdo MeuIP.txt na área de trabalho:


for /f "delims=[] tokens=2" %%a in ('ping -4 -n 1 %computername%') do echo %%a>%userprofile%\desktop\MeuIP.txt

 

O código completo para trocar seu IP poderia ser algo assim:

 


@echo off
chcp 1252 > Nul

:: Especifique aqui o Gateway:
set Gateway=192.168.43.1

:: Especifique aqui a mascara de rede:
set Mascara=255.255.0.0

:: Especifique aqui o nome da rede:
set Rede=Wi-Fi

:: Especifique aqui o DNS Primario e Secundário:
set DNS1=8.8.8.8
set DNS2=8.8.4.4

:: Essa parte pede elevação caso o usuário não tenha clickado com botão direito e Executar como admin:
net session >nul 2>&1 || (powershell start -verb runas '%~0' &exit /b)

:: Essa parte pega o IP Atual e salva na variável %IPAntigo%
for /f "delims=[] tokens=2" %%a in ('ping -4 -n 1 %computername%') do set IPAntigo=%%a

:: Essa parte Salva o novo IP em uma variável chamada %IPNovo%
for /f "tokens=3,4 delims=." %%a in ("%IPAntigo%") do set IPNovo=172.27.%%a.%%b


echo.
Echo  IP Anterior: %IPAntigo%
timeout /t 1 > Nul
echo  Mudando os primeiros 2 octetos do IP para 172.27:
echo  %IPAntigo% -^> %IPNovo%

:: Essa parte muda para o novo ip:
netsh interface ipv4 set address name="%Rede%" static %IPNovo% %Mascara% %Gateway%
netsh interface ipv4 set dnsservers name="%Rede%" static address="%DNS1%" >Nul 2>&1
netsh interface ip add dnsservers name="%Rede%" address="%DNS2%" index=2 >Nul 2>&1

:: Essa parte verifica o IP atual e confirma no final:
for /f "tokens=2 delims={," %%a in ('wmic nicconfig where "IPEnabled=True" get IPAddress /value') do for /f "delims=" %%b in ("%%a") do set IPAtual=%%~b
echo Seu novo IP é: %IPAtual%
echo.
pause

 

super02.gif

  • Curtir 6
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@ricardo_br Obrigado

 

Vi o código mas de antemão aproveitarei os for possivelmente, a parte do powershell também depois de alguns testes do meu. Apenas não entendi a necessidade de colocar o os outros dados da rede em variáveis. Mas o importante é estar funcionando.

 

Só não entendi direto os for porém seria isso abaixo que eles fazem:

o 1º guarda o ip antigo por completo na variável que você mencionou. No 2º for você pega a 3º e 4º parte do ip para usar na variável ipatual. Só não consegui ver onde você declara o %%b que foi onde me perdi.

adicionado 3 minutos depois

 

3 minutos atrás, fernandoguimaraes disse:

Só não consegui ver onde você declara o %%b que foi onde me perdi.

Li melhor a explicação do for entendi o porque do %%b

Link para o comentário
Compartilhar em outros sites

@ricardo_br pelo visto terei de usar a linha do powershell mesmo. Sobre as variáveis entendi essa parte e consegui fazer o que estava pretendendo o for seu ajudou e como queria apenas a ultima parte do ip otimizei ele para a sentença abaixo

for /f "tokens=4 delims=.:" %%a in ('ping -4 -n 1 %computername%') do set old=%%a

E obrigado pela ajuda.

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...