从 bat 文件的输出中提取数据

从 bat 文件的输出中提取数据

我想通过一个 bat 文件将我的 IP 添加到系统/用户环境中。

这是bat文件的代码

curl http://httpbin.org/ip

这是输出:

{
   "origin": "1.2.3.4"
}

我想设置环境set ip=1.2.3.4

我该怎么做?

答案1

我想通过一个 bat 文件将我的 IP 地址添加到系统/用户环境中。

curl http://httpbin.org/ip

这是输出:

{
   "origin": "1.2.3.4"
}

使用以下批处理文件(test.cmd):

rem @echo off
setlocal enableDelayedExpansion
for /f "usebackq skip=1 tokens=2" %%i in (`curl http://httpbin.org/ip`) do (
  setx ip %%~i
  goto :done
  )
:done
endlocal

笔记:

  • skip=1用于跳过第一行{
  • goto :done用于跳过最后一行}
  • ~用于从 IP 地址中删除引号。

进一步阅读

  • Windows CMD 命令行的 AZ 索引- 与 Windows cmd 行相关的所有事物的绝佳参考。
  • 对于/f- 循环命令以执行另一个命令的结果。
  • 参数- 命令行参数(或参数)是传递到批处理脚本的任何值。
  • 设置- 永久设置环境变量,SETX 可用于为机器(HKLM)或当前登录用户(HKCU)设置环境变量。

答案2

这相当于 PowerShell 中的操作:

$ip = curl http://httpbin.org/ip | Select-String -Pattern "[0-9.]+" | Select Matches
Set ip $ip.Matches.Get(0).Value

相关内容