今日、別の質問に答えて次のスクリプトを書きましたが、アレイで発生している問題を解決できません。何らかの理由で、配列内で使用している変数が正しく評価されません。これが私のコードです:
@echo off
setlocal enabledelayedexpansion
set q=wmic /NAMESPACE:\\root\directory\ldap PATH ds_computer get ds_name
set q1=NICCONFIG get DNSHostname^,IPAddress^,MACAddress
set /a "c=1" & set /a "inc=1" & set /a "inc2=0"
::for /f "skip=1" %%a in ('%q%') do (
for /f "tokens=1-3 delims=] " %%j in (
'wmic logicaldisk where drivetype^=3 get deviceid^,volumeserialnumber^|find /N ":"') do (
set "lines=%%j"
set "v[!c!]=%%k" & set /a "c+=1"
set "v[!c!]=%%l" & set /a "c+=1"
if [!lines! equ [!c! goto :out
)
:out
set c=
for /f "tokens=1 delims=|" %%i in (
'wmic /node:"wpcf-dc" OS get name^|find "|"') do (set v=%%i)
for /f "tokens=1-3 delims={}" %%b in (
'wmic /NODE:"wpcf-dc" NICCONFIG Where IPEnabled^=TRUE get DNSHostname^,IPAddress^,MACAddress /FORMAT:TABLE^|find "{"'
) do ( For /F "tokens=1-3 delims= " %%e in ("%%~b %%~c %%d") do (
echo(Host: %%e
echo(IP: %%f
echo(MAC: %%g
echo(Windows Version: !v!
set lines=!lines:[= !
for /L %%l in (1,2,!lines!) do (
set /a "inc2=%%l" & set /a "inc2+=1"
echo value of inc2=!inc2!
echo(Drive!inc!: !v[%%l]!
echo(Volume!inc!: !v[!inc2!]!
set /a "inc+=1"
)
)
)
::)
これが私が得ている出力です。
C:\Scripts\Batch>LDAPquery.cmd
Host: WPCF-DC
IP: 10.6.1.226
MAC: 00:11:43:EC:D4:B7
Windows Version: Microsoft Windows Server 2003 Standard Edition
value of inc2=2
Drive1: C:
Volume1: inc2
value of inc2=4
Drive2: D:
Volume2: inc2
inc2 の値が数値の場合、配列内で評価されない理由がわかりません。任意の洞察をいただければ幸いです。