【发布时间】:2014-06-02 17:44:26
【问题描述】:
在读取 2 个文件时尝试进行 2 个循环,目的是从第一个文件中获取 1 个值,将其与第二个文件中的 1,2,3rd.. 等值进行比较,然后返回外部循环,获取第 2 个值并进行比较依次到第二个文件中的所有值,依此类推。
问题是它只对第一个文件中的第一个值进行比较并停止。
代码:
Get-ExecutionPolicy
$main_list = [System.IO.File]::OpenText('c:\ping-workstations\main_list.txt')
$retired = [System.IO.File]::OpenText('c:\ping-workstations\retired.txt')
$main_i = 1
$retired_i = 1
[string]$main_list_line
[string]$retired_list_line
try
{
while(!$main_list.EndOfStream)
{
$main_list_line = $main_list.ReadLine()
while(!$retired.EndOfStream)
{
$retired_list_line = $retired.readline()
if($main_list_line -eq $retired_list_line)
{
write-host "`n`n`n match found for $main_list_line in main list `n`n`n`n"
add-content "c:\ping-workstations\matches-through-text-files.txt" "$main_list_line`n"
}
write-host "main iteration: $main_i / inside iteration: $retired_i`n - main value: $main_list_line ---- inside value: $retired_list_line`n`n"
$retired_1++
}
$main_i++
}
}
finally
{
$main_list.close()
$retired.close()
}
【问题讨论】:
-
您到底想达到什么目标?如果您只需要查找匹配项,这很容易:
$main_list = Get-Content 'c:\ping-workstations\main_list.txt'; $retired = Get-Content 'c:\ping-workstations\retired.txt'; foreach ($line in $main_list) { if ($retired -contains $line) { 'match found: {0}' -f $line } } -
它的列表很长,所以尽量避免使用 GC
标签: powershell