我有一个运行在networking上的脚本,VPN和LAN环境一样。
该脚本以前工作正常,因为我们有variables,存储pipe理员的用户名和密码。 但是,由于最近发生的变化,当我们通过networking映射驱动器时,机器名称现在需要在pipe理员用户名的前面,例如machinename2343\administrator
。
我想要做的是采取现有的命令 – 也许如nbtstat – 并inputIP地址后,让程序拉机器名称,并将其插入到一个variables。
我发现Nbtstat可以给我机器名,但为我的任务提供了大量不必要的信息。 有没有办法以可靠和一致的方式过滤出机器名称,或者是否有另一个networking相关的命令执行相同的function?
`@echoclosures
FOR / f“标记= 1 * delims = skip = 23”%% a IN('nbtstat -a IPADDRESS)DO(
SET VARIABLE = %% a
GOTO完成
)
:已完成
echo计算机名称:%VARIABLE%`
你可以做ping /a
。 计算机名称已解决。 这个计算机名称是第二个标记。 我没有照顾错误检查。 我相信你可以自己实现。 尝试这个:
@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%
把它放在你的批处理文件中。
你可以使用%computername%
环境变量。
当我第一次看到你的文章,我以为你是在每台机器上远程运行批处理文件。 如果是这种情况,批处理文件中的%computername%
会起作用,因为远程执行批处理文件时, %computername%
将根据远程计算机的环境变量而不是本地计算机进行扩展。
回想一下,它还不是很清楚,但根据你的评论,我假设批处理文件在本地运行,然后连接到一组机器来执行一些操作。
您可以使用工具WMI命令行工具来获取计算机名称。 该解决方案看起来类似于@ Thrustmaster's,但是我认为它有点清洁,因为wmic的输出,在这种情况下,“只是以可靠的一致的方式过滤掉机器名称”。 当然你可以用你想查询的IP替换127.0.0.1。
@ECHO OFF FOR /F "tokens=*" %%A IN ('wmic /node:127.0.0.1 ComputerSystem Get Name /Value ^| FIND "="') DO ( SET COMP.%%A ) ECHO %COMP.NAME%