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
}

然后我有一个名为 newdns.txt 的文件,其中包含 4 个条目(192.168.0.10、192.168.0.11、192.168.0.12、192.168.0.13)。我想读取 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 语句以及如何继续循环遍历 newdns.txt 直到 scopeout.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 回答