我正在使用变量$ listing作为文件名,如下所示。

Get-Content BHS_output.txt | Select-String -pattern $listing| sort | Foreach-Object {$_ -replace "$listing", ""} > $listing

其中$listing是第一次迭代时来自文件第一行的变量。在第二次迭代中
$listing = Get-Content .\file.txt | select-object -First 1 .
$listing必须具有BHS_E_CNBY20150622035126.CSV。不是BHS_E_BHSA20150622035126.CSV。

文件名称:TestFile1_sorted.txt
BHS_E_BHAA20150622035126.CSV
BHS_E_BHSA20150622035126.CSV
BHS_E_CNBY20150622035126.CSV
BHS_E_PACS20150622035126.CSV

最佳答案

您将得到的错误将与保存到您正在读取的文件相同,该文件是您创建的管道的产物。每行一次处理一次,因此在文件仍处于打开状态以继续读取的同时将第二行写入文件。

(Get-Content $path) | Select-Object -Skip 1 | Set-Content $path

(Get-Content $path)放在方括号中会将整个文件处理到内存中。注意文件是否很大。然后,其余代码将正常运行。

关于powershell - 如何在Powershell中使用While循环?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31137887/

10-14 19:50