首页 > 解决方案 > 通过批处理文件将一台机器的UUID和IP存储在一个文件中

问题描述

我需要通过批处理文件生成一个包含机器的 UUID 和 IP 数据的文本文件,如下所示:

CAA8A570-86FF-81E4-3398-0071C21A28CE 192.168.0.0

我使用了这些命令,但我不知道如何将信息放在同一个文件中。

wmic csproduct get "UUID" > C:\UUID.txt
ipconfig /all | find /i "phy" > C:\MAC.txt

标签: batch-fileuuid

解决方案


可以通过批处理文件获取计算机的 IP 地址和 UUID。但是,尚不清楚您想对它们做什么。因此,我将向您展示获取它们的方法,并将它们的值存储在一个变量中。然后做任何你想做的事:

@echo off
rem Script to get the UUID and IP address of this computer.

rem Get IP address:
for /F "tokens=2 delims=(:" %%A IN ('ipconfig /all ^| findstr /c:"IPv4"') do (
    for /F "tokens=*" %%B IN ("%%A") do (
        rem Set the IP address into the IP_address variable:
        set "IP_address=%%B"
    )
)

rem Get UUID:
for /F %%A IN ('(wmic csproduct get "UUID"^) ^| findstr /c:"-"') do (
    rem Set the UUID in the UUID variable:
    set "UUID=%%A"
)

rem Echo the results
echo We have found that this computer has a UUID of %UUID%.
echo We have also found the IP address of this computer. It is: %IP_address%

如果要将它们重定向到问题中提到的格式的文件,请使用:

(echo %UUID%  %IP_address%)>filename.txt

如果要附加它们,请使用:

(echo %UUID%  %IP_address%)>>filename.txt

如果我向您展示每个已处理命令的输出,您可能会更好地理解我的代码是如何工作的。


ipconfig /all | findstr /c:"Ipv4"

它的输出是(对我来说):

   IPv4 Address. . . . . . . . . . . : xxx.xxx.x.x(Preferred)

我不确定你是否得到这些括号。

处理命令的for /F循环有tokens=2delims=(:选项。

  • delims=(:选项表示不将字符(:. 然后,令牌将(由 分隔|IPv4 Address. . . . . . . . . . . | xxx.xxx.x.x|Preferred):。(:如您所见,我已删除字符。包含 IP 地址的令牌是第二个,所以我选择它使用:
  • tokens=2选项。

因为它的开头有一个空格,所以我在其中创建另一个循环以删除开头的空格,使用tokens=*选项。

最后,将 IP 地址设置到IP_address变量中,就可以使用了!


(wmic csproduct get "UUID") | findstr /c:"-"

此命令的输出只是 UUID(此处没有额外的循环):

F5A91381-529E-11CB-A155-BF406BD05412

所以,我只是将它设置为一个变量 ( UUID) 就可以使用了!


为了了解“重定向”和“附加”的含义,我建议阅读以下链接:

另外,我建议打开一个 cmd,输入以下命令并仔细阅读它们的输出:

  • for /?
  • wmic /?
  • findstr /?
  • rem /?
  • set /?
  • echo /?

这肯定会帮助您理解我的代码。


推荐阅读