如何通过使用 powershell 验证文本文件中的每一行来维护会话
How to maintain a session by validating each line in a text file using powershell
下面是我的示例代码:
foreach ($var1 in (gc 1.txt)){
// my code logic
}
这里的1.txt文件包含了abc、xyz、pqr等值的列表,比如1.txt文件中的100行,需要一一处理。处理完 100 行后,中间会更改一个新值进行处理,现在计数为 101 行。现在我需要重新启动脚本并且应该处理新添加的值而不是从头开始。
实际上,对于这个要求,我的项目中有数百行。
您能否建议我实现此目标的最佳方法?
提前致谢
试试这个 - 保存文件的快照并将其与当前列表进行比较:
# Import values and list of completed updates
$ToUpdate = Get-Content list.txt
$Completed = Get-Content completed.txt
# Take a snapshot for next run
Copy-Item -Path list.txt -Destination completed.txt -Force
# use Compare to determine which updates are new
$Unprocessed = Compare-Object $ToUpdate $Completed |
where SideIndicator -EQ '<=' |
Select -ExpandProperty InputObject
Foreach ($var1 in $Unprocessed) {
# Do Stuff
}
理想情况下,您想检查您的实际目标而不是日志文件。如果您要更新 database/user directory/grocery 列表,请查询该列表,否则您可能 运行 遇到问题。如果在您不注意时其他东西更新了目标怎么办?如果您的脚本出错并且实际上没有完成所有更新怎么办?需要注意的事项。
下面是我的示例代码:
foreach ($var1 in (gc 1.txt)){
// my code logic
}
这里的1.txt文件包含了abc、xyz、pqr等值的列表,比如1.txt文件中的100行,需要一一处理。处理完 100 行后,中间会更改一个新值进行处理,现在计数为 101 行。现在我需要重新启动脚本并且应该处理新添加的值而不是从头开始。
实际上,对于这个要求,我的项目中有数百行。
您能否建议我实现此目标的最佳方法?
提前致谢
试试这个 - 保存文件的快照并将其与当前列表进行比较:
# Import values and list of completed updates
$ToUpdate = Get-Content list.txt
$Completed = Get-Content completed.txt
# Take a snapshot for next run
Copy-Item -Path list.txt -Destination completed.txt -Force
# use Compare to determine which updates are new
$Unprocessed = Compare-Object $ToUpdate $Completed |
where SideIndicator -EQ '<=' |
Select -ExpandProperty InputObject
Foreach ($var1 in $Unprocessed) {
# Do Stuff
}
理想情况下,您想检查您的实际目标而不是日志文件。如果您要更新 database/user directory/grocery 列表,请查询该列表,否则您可能 运行 遇到问题。如果在您不注意时其他东西更新了目标怎么办?如果您的脚本出错并且实际上没有完成所有更新怎么办?需要注意的事项。