两个循环两个文件比较-powershell
尝试在读取2个文件时进行2次循环,目的是从第一个文件中获取1个值,并将其与1,2,3.进行比较。。etc第二个文件中的值,然后返回到外部循环,获取第二个值并依次与第二个文件中的所有值进行比较,依此类推 问题是它只对第一个文件中的第一个值运行比较,然后停止 代码:两个循环两个文件比较-powershell,powershell,Powershell,尝试在读取2个文件时进行2次循环,目的是从第一个文件中获取1个值,并将其与1,2,3.进行比较。。etc第二个文件中的值,然后返回到外部循环,获取第二个值并依次与第二个文件中的所有值进行比较,依此类推 问题是它只对第一个文件中的第一个值运行比较,然后停止 代码: 内部循环完成后,需要重新打开$retired文件。正如现在所写的,一旦内部循环遍历$retired文件,$retired.EndOfStream将永远保持为true try { while(!$main_list.EndOfSt
内部循环完成后,需要重新打开$retired文件。正如现在所写的,一旦内部循环遍历$retired文件,$retired.EndOfStream将永远保持为true
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++
$retired.close()
$retired = [System.IO.File]::OpenText('c:\ping-workstations\retired.txt')
}
}
finally
{
$main_list.close()
$retired.close()
}
作为补充说明,您是否考虑过使用Powershell ISE?具有调试功能;通过设置断点并单步执行代码,我能够快速发现问题。您到底想实现什么?如果只需要查找匹配项,则很容易:
$main_list=Get Content'c:\ping workstations\main_list.txt'$retired=获取内容“c:\ping workstations\retired.txt”;foreach($main_list中的line){if($retired-包含$line){'match found:{0}'-f$line}}
这是一个很长的列表,所以尽量避免使用gc非常感谢你,是的,今天早上经过无数次尝试,终于找到了它。从现在起将使用ISE。
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++
$retired.close()
$retired = [System.IO.File]::OpenText('c:\ping-workstations\retired.txt')
}
}
finally
{
$main_list.close()
$retired.close()
}