1

次の形式で、コンピューター名と対応する静的 IP アドレスの名前を含むテキスト ファイルがあります。

COMPUTER NAME:PC ADDRESS=154.100.1.1 MASK=255.255.254.0 
COMPUTER NAME:PC2 ADDRESS=100.100.1.1 MASK=255.255.254.0 

各行から値を取得し、後で使用するためにバッチ ファイルに変数として入れたいと思います。これは可能ですか?全体的な目標は、この簡単に編集できるテキスト ファイルの値を、別のバッチ ファイルの netsh コマンドで使用できるようにすることです。

以下のスニペットを使用して、テキスト ファイルの行を取得し、それらを 1 つの変数に配置する方法を見つけました。しかし、1行から複数​​の変数を作成する方法がわかりません。誰かがこれで私を助けることができれば、私はそれを大いに感謝します!

@echo o
setlocal enabledelayedexpansion
set Counter=1
for /f %%x in (D:\COMP_T.txt) do (
  set "comp!Counter!=%%x"
  set /a Counter+=1
)
4

3 に答える 3

6

これはうまくいくはずです:

@echo off
setlocal EnableDelayedExpansion
set "Count=1"
for /f "tokens=1,2,3,4,5,6,7 delims==: " %%A in (C:\File.txt) do (
    set "%%A[!Count!]=%%C"
    set "%%D[!Count!]=%%E"
    set "%%F[!Count!]=%%G"
    set /a "Count+=1"
)
:: Call other batch script here.
endlocal

出力例:

COMPUTER[1]=PC
COMPUTER[2]=PC2
ADDRESS[1]=154.100.1.1
ADDRESS[2]=100.100.1.1
MASK[1]=255.255.254.0
MASK[2]=255.255.254.0
于 2013-06-26T20:11:57.817 に答える
2

別のバッチ ファイルで変数のセットを 1 行ずつ使用するには、ここで他の回答で行ったように行を解析し、メタ変数を使用して他のバッチ ファイルを呼び出します。

@echo off
for /f "tokens=1,2,3,4,5,6,7 delims==: " %%a in ('type "File.txt" ') do (
    echo "computer_name=%%c"
    echo "address=%%e"
    echo "mask=%%g"
Call "batch script" "%%c" "%%e" "%%g"
)
于 2013-06-27T02:13:37.603 に答える
2

これは、遅延拡張の必要性を回避するソリューションです。FINDSTR を使用して、各行:の先頭に行番号とそれに続く行番号を挿入します。の検索文字列は"^"、ファイル内のすべての行に一致することが保証されています。

他の唯一の問題は、行を適切に解析するように TOKENS と DELIMS を設定することです。

@echo off
setlocal
for /f "tokens=1,4,6,8 delims=:= " %%A in ('findstr /n "^" "d:\comp_t.txt"') do (
  set "comp%%A=%%B"
  set "addr%%A=%%C"
  set "mask%%A=%%D"
  set "counter=%%A"
)
于 2013-06-26T23:34:39.263 に答える