如何在 Windows Shell 中分配变量?

如何在 Windows Shell 中分配变量?

在 Windows7 shell 中,我有以下工作代码来打印出当前 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]。你是不是编写脚本bashsh任何与 Bourne shell 类似的东西。Windows 批处理脚本通常在cmd.exeshell(MS-DOS 的后代)上运行COMMAND.COM,并且具有完全不同的语法。

尤其,%name%, 不是$name,是 Windows 和 MS-DOS 批处理脚本中变量的语法。

echo IP is %ip%

当你这样做的时候:

for /F "tokens=13" %%i in ('ipconfig | findstr IPv4 | findstr 172') do (

相关内容