批处理脚本无法将变量的内容传递给其他变量

时间:2019-01-11 06:58:51

标签: windows batch-file

我正在制作一个有趣的脚本,用于识别网络上的所有计算机。我遇到的问题是从ARP表捕获本地计算机的相关IP地址。 有一个功能应该允许我截断结果并将其压缩到子网中以查看地址是否相关,但是当我尝试处理变量时,它不会为任何变量分配任何内容,并且就像所有变量一样空的。

下面是脚本的截断版本:

SET SUB="192.168.10"
SET count=1
FOR /F "tokens=* USEBACKQ" %%F IN (`arp -a`) DO (
    SET Foo=%%F
    SET Faa=%Foo%
    SET Foo=%Foo:~0,15%
    SET Faa=%Faa:~0,11%
    IF /I "!Faa!"=="%SUB%" ECHO %Foo% >> comp_list.txt
    SET /a count=!count!+1
) 

cmd中循环的最后一行的输出如下:

C:\_Scripts\>(
SET Foo=255.255.255.255       ff-ff-ff-ff-ff-ff     static
SET Faa=""
SET Foo=""
SET Faa=""
IF !Faa! == "" ECHO %Foo% >> comp_list.txt
SET /a count=!count!+1
)

1 个答案:

答案 0 :(得分:0)

不要使用子字符串替换。这是不可靠的(因为每个IP元素可能具有1、2或3位数字)而且您不需要检查每个条目的正确子网-只需过滤 if(NULL == m_pConnection) m_pConnection.CreateInstance(__uuidof(ADODB::Connection)); char strOpenQuery[256]; sprintf_s(strOpenQuery, 256, "Provider=Microsoft.ACE.OLEDB.16.0; Data Source=%s; Jet OLEDB:Database Password=Password;", opendb); m_pConnection->Open(_bstr_t(strOpenQuery), _bstr_t(""), _bstr_t(""), -1); 的输出-就会更快:

arp -a