添付された3つのインターフェイス記述をカスタム変数として割り当て、その後、これらの各変数を出力することになっているバッチファイルを作成しました。最終的には、印刷する代わりに、これらの変数を使用して出力に応じてインターフェイス自体を構成する予定ですが、今のところ、変数が正しく割り当てられているのを見て満足しています。
これが私がこれに取り組んでいる方法です:
set cnt=1
for /f "tokens=12,13*" %%f in ('ipconfig /all^|findstr "Description"') do (
setlocal enabledelayedexpansion
set "mess.!cnt!.name=%%h"
endlocal
set /a cnt+=1
)
echo mess.0.name
for /l %%t in (1,1,%cnt%) do (
echo mess.%%t.name
echo "%mess.0.name%"
)
pause
delaydexpansionを使用して考えられるほぼすべてのアプローチを実行しましたが、バッチファイルでmess.cnt.nameをループごとに増分する変数と見なすことができません。
出力のサンプルを次に示します。
C:\Users\admin\Desktop>test1.bat
C:\Users\admin\Desktop>set cnt=1
C:\Users\admin\Desktop>for /F "tokens=12,13*" %f in('ipconfig /all|findstr "Des
cription"') do (
setlocal enabledelayedexpansion
set "mess.!cnt!.name=%h"
endlocal
set /a cnt+=1
)
C:\Users\admin\Desktop>(
setlocal enabledelayedexpansion
set "mess.!cnt!.name=AirLink USB Ethernet/RNDIS"
endlocal
set /a cnt+=1
)
C:\Users\admin\Desktop>(
setlocal enabledelayedexpansion
set "mess.!cnt!.name=LAN9500 USB 2.0 to Ethernet 10/100 Adapter"
endlocal
set /a cnt+=1
)
C:\Users\admin\Desktop>(
setlocal enabledelayedexpansion
set "mess.!cnt!.name=Intel(R) 82579LM Gigabit Network Connection"
endlocal
set /a cnt+=1
)
C:\Users\admin\Desktop>echo mess.0.name
mess.0.name
C:\Users\admin\Desktop>for /L %t in (1 1 4) do (
echo mess.%t.name
echo "Intel(R) 82579LM Gigabit Network Connection"
)
C:\Users\admin\Desktop>(
echo mess.1.name
echo "Intel(R) 82579LM Gigabit Network Connection"
)
mess.1.name
"Intel(R) 82579LM Gigabit Network Connection"
C:\Users\admin\Desktop>(
echo mess.2.name
echo "Intel(R) 82579LM Gigabit Network Connection"
)
mess.2.name
"Intel(R) 82579LM Gigabit Network Connection"
C:\Users\admin\Desktop>(
echo mess.3.name
echo "Intel(R) 82579LM Gigabit Network Connection"
)
mess.3.name
"Intel(R) 82579LM Gigabit Network Connection"
C:\Users\admin\Desktop>(
echo mess.4.name
echo "Intel(R) 82579LM Gigabit Network Connection"
)
mess.4.name
"Intel(R) 82579LM Gigabit Network Connection"
C:\Users\admin\Desktop>pause
Press any key to continue . . .
これに関するどんな助けでも大いに感謝されるでしょう。私はこれで何日も壁に頭を打ちつけてきました。
ビクター
@ECHO OFF
SETLOCAL
set cnt=0
for /f "tokens=1,14*" %%f in ('ipconfig /all^|findstr "Description"^|find /n /v ""') do (
set "mess%%fname=%%h"
set /a cnt+=1
)
echo %mess[1]name%
for /l %%t in (1,1,%cnt%) do (
CALL echo mess[%%t]name=%%mess[%%t]name%%
)
SET mess
GOTO :EOF
基本的に、endlocal
はの設定をバックアウトしてmess.?.name
おり、古典的な治療法はコードブロックでは機能しません。
同様に、delayedexpansion
表示するように設定するか、表示した構文を使用する必要があるレポートループ(別の方法を追加しました)。
さてsetlocal/endlocal
、ルーチン全体に1つだけ配置し、コードブロックで切り替えない場合は、より簡単に機能した可能性があります。
または-内部サブルーチンを呼び出して、処理を行うこともできますset
。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加