0

あるファイルから別のファイルの末尾にテキストを追加する必要がありますが、一方のファイルの内容は他方のファイルよりも大幅に短いため、長いファイルが完了するまで短いファイルをループし続けたいと考えています。次のコードで初期ファイル (scopeout.txt) を生成します。

$a = "NETSH Dhcp Server 192.168.10.1 Scope "
$b = " set optionvalue 6 IPADDRESS "
$Scopelist = Get-Content C:\ListOfScopes.txt

foreach ($i in $ListOfScopes)

{
$a + $i + $b >> C:\TestArea\scopeout.txt
}

次に、4 つのエントリ (192.168.0.10、192.168.0.11、192.168.0.12、192.168.0.13) を含む newdns.txt というファイルがあります。scopeout.txt の各行を読み取り、newdns.txt からエントリを 1 つ追加してから、各ファイルの次の行に移動します。scopeout.txt が完了するまでこのプロセスを繰り返したいので、最終的なファイルは次のようになります。

NETSH Dhcp Server 192.168.10.1 Scope 192.168.50.1 set optionvalue 6 IPADDRESS 192.168.0.10
NETSH Dhcp Server 192.168.10.1 Scope 192.168.51.0 set optionvalue 6 IPADDRESS 192.168.0.11
NETSH Dhcp Server 192.168.10.1 Scope 192.168.52.0 set optionvalue 6 IPADDRESS 192.168.0.12
NETSH Dhcp Server 192.168.10.1 Scope 192.168.53.0 set optionvalue 6 IPADDRESS 192.168.0.13
NETSH Dhcp Server 192.168.10.1 Scope 192.168.54.0 set optionvalue 6 IPADDRESS 192.168.0.10
NETSH Dhcp Server 192.168.10.1 Scope 192.168.55.0 set optionvalue 6 IPADDRESS 192.168.0.11
NETSH Dhcp Server 192.168.10.1 Scope 192.168.56.0 set optionvalue 6 IPADDRESS 192.168.0.12
NETSH Dhcp Server 192.168.10.1 Scope 192.168.57.0 set optionvalue 6 IPADDRESS 192.168.0.13
NETSH Dhcp Server 192.168.10.1 Scope 192.168.58.0 set optionvalue 6 IPADDRESS 192.168.0.10
NETSH Dhcp Server 192.168.10.1 scope 192.168.59.0 set optionvalue 6 IPADDRESS 192.168.0.11

foreach ステートメントを使用して実験しましたが、2 つの foreach ステートメントを組み合わせる方法と、scopeout.txt が完了するまで newdns.txt をループし続ける方法がわかりません。

4

1 に答える 1

2

これを試して:

$c = 0
$ip = Get-Content C:\newdns.txt

Get-Content C:\ListOfScopes.txt | Foreach-Object{
    if ($c -gt 3) {$c=0} 
    "NETSH Dhcp Server 192.168.10.1 Scope $_ set optionvalue 6 IPADDRESS $($ip[$c])"
    $c++
}
于 2012-11-27T18:51:13.120 に答える