Windows:获取机器名称并将其存储在变量中

标签 windows variables batch-file

我有一个在网络上运行的脚本,VPN 与 LAN 环境相同。

该脚本之前运行良好,因为我们有存储管理员用户名和密码的变量。然而,由于最近的变化,当我们通过网络映射驱动器时,机器名称现在需要在管理员用户名前面,例如机器名 2343\管理员

我想做的是使用一个现有的命令——比如 nbtstat——并在输入 ip 地址后,让程序提取机器名并将其插入到一个变量中。

我发现 Nbtstat 可以给我机器名,但为我的任务提供了大量不必要的信息。有没有办法以可靠和一致的方式过滤掉机器名称,或者是否有另一个以相同容量执行的网络相关命令?

`@echo off

FOR /f "tokens=1* delims= skip=23 " %%a IN ('nbtstat -a IPADDRESS) DO ( SET VARIABLE=%%a GOTO Done ) :Done echo Computer name: %VARIABLE%`

最佳答案

您可以执行 ping/a。计算机名称已解析。而这个计算机名就是第二个 token 。我没有注意错误检查。我相信你可以自己实现。 试试这个:

@ECHO OFF
FOR /f "tokens=2* delims= " %%a IN ('PING -a -n 1 IPADDRESS') DO (
    SET Variable=%%a
    GOTO Done
)
:Done
echo Computer name: %Variable%

将其放入您的批处理文件中合适的位置。

关于Windows:获取机器名称并将其存储在变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4611734/

相关文章:

mysql - 使用@variable 将 MSsQL 转换为 MySql 存储过程

C++:自动初始化

windows - 获取在 Bat 文件中运行的 exe 的进程 ID

windows - 用于目录读取的批处理脚本通配符或 %?

linux - 在 Windows 中显示 linux 终端颜色

windows - 在 Windows XP 中获取用户的组名 - 使用任何可能的方式

javascript - 对变量的引用未定义

batch-file - 使用批处理文件替换字符(替代 SED)

mysql - 在 Windows 中无法将 MySQL 与 Liferay 连接

windows - Qt 创建者 - LNK1104 : cannot open file "glu32.lib"