使用cmd命令中的变量

时间:2016-07-02 21:58:12

标签: batch-file command-prompt

我正在尝试创建一个从基本CMD命令中获取变量的批处理程序。 例如:

c:\Users> ipconfig
.....
IPv4 Address ....... 123.456.7.89
.....

假设我想制作一个仅在屏幕上打印IP地址的批处理程序,例如:

@echo off
echo (IP Address Variable Here)
pause;

我需要做什么?

感谢您的时间。

1 个答案:

答案 0 :(得分:3)

我想创建一个只在屏幕上打印IP地址的批处理程序

使用以下批处理文件。

<强> GetIPAddress.cmd:

@echo off
setlocal enabledelayedexpansion
rem throw away everything except the IPv4 address line 
for /f "usebackq tokens=*" %%a in (`ipconfig ^| findstr /i "ipv4"`) do (
  rem we have for example "IPv4 Address. . . . . . . . . . . : 192.168.42.78"
  rem split on : and get 2nd token
  for /f delims^=^:^ tokens^=2 %%b in ('echo %%a') do (
    rem we have " 192.168.42.78"
    set _ip=%%b
    rem strip leading space
    set _ip=!_ip:~1!
    )
  )
echo %_ip%
endlocal

注意:

  • 您想要的值保存在_ip

示例用法和输出:

F:\test>ipconfig | findstr /i "ipv4"
   IPv4 Address. . . . . . . . . . . : 192.168.42.78

F:\test>GetIPAddress
192.168.42.78

进一步阅读

  • An A-Z Index of the Windows CMD command line - 与Windows cmd相关的所有内容的绝佳参考。
  • enabledelayedexpansion - 延迟扩展会导致变量在执行时而不是在解析时扩展。
  • for /f - 针对另一个命令的结果循环命令。
  • ipconfig - 配置IP(Internet协议配置)
  • set - 显示,设置或删除CMD环境变量。使用SET进行的更改将仅在当前CMD会话期间保留。
  • setlocal - 设置选项以控制批处理文件中环境变量的可见性。
  • variables - 提取变量(子串)的一部分。