Windows7 셸에는 현재 IP 주소를 인쇄하는 다음 작업 코드가 있습니다.
@echo off
:: get ipv4
ipconfig | findstr IPv4 | findstr 172 > ipadd.txt
:: For statement to find the numbers
for /F "tokens=13" %%i in (ipadd.txt) do (
echo %%i
)
del ipadd.txt /Q
그러나 IP 주소가 인쇄되는 것이 아니라 다음(작동하지 않는) 코드 조각과 같이 변수에 저장되기를 원합니다.
@echo off
:: get ipv4
ipconfig | findstr IPv4 | findstr 172 > ipadd.txt
:: For statement to find the numbers
for /F "tokens=13" %%i in (ipadd.txt) do (
set ip=%%i
)
del ipadd.txt /Q
echo IP is $ip
예상 출력은 다음과 같습니다(예)
IP는 123.456.7.8입니다.
실제 출력은
IP는 $ip입니다.
문제를 해결하는 방법은 무엇입니까?
답변1
질문에 [bash] 태그를 지정했습니다. 당신은~ 아니다Bourne 쉘과 같은 원격 bash
으로 스크립트를 작성합니다 . sh
Windows 배치 스크립트는 일반적으로 MS-DOS cmd.exe
의 자손인 셸 에서 실행되며 COMMAND.COM
완전히 다른 구문을 사용합니다.
특히,%name%
, 아니다$name
는 Windows 및 MS-DOS 배치 스크립트의 변수 구문입니다.
echo IP is %ip%
그 동안:
for /F "tokens=13" %%i in ('ipconfig | findstr IPv4 | findstr 172') do (