[英]Batch script can't pass variable's contents to other variables
我正在制作一個有趣的腳本,用於識別網絡上的所有計算機。 我遇到的問題是從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
)
不要使用子字符串替換。 這是不可靠的(因為每個IP元素可能有1位,2位或3位數字)而且您不需要檢查每個條目的正確子網-只需過濾arp -a
的輸出即可,這要快得多:
SET "SUB=146.254.181."
SET count=0
for /f %%a in ('arp -a^|find "%sub%"') do (
set /a count+=1
>> "comp_list.txt" echo IP:%%a Subnet: %%~na
)
>>"comp_list.txt" echo Sum: %count%
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.