如何在Powershell中使用While循环?

时间:2015-06-30 12:08:12

标签: powershell powershell-v2.0

我使用变量$ 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

3 个答案:

答案 0 :(得分:1)

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

$scope.UpdateUser = function(userId) {
//                           ^^^^^^
    alert(userId);
};

(Get-Content $path) | Select-Object -Skip 1 | Set-Content $path 括在括号中会将整个文件处理到内存中。请注意文件是否很大。然后你的其余代码将正常工作。

答案 1 :(得分:0)

你有没有试过"选择"而不是" select-object"

Get-Content TestFile1_sorted.txt | Select -Skip 1

之前有人回答了一个问题: Remove Top Line of Text File with Powershell

get-content $file |
    select -Skip 1 |
    set-content "$file-temp"
move "$file-temp" $file -Force

答案 2 :(得分:0)

你可以这样做:

$a = Get-Content C:\temp.txt
$a[1..-1] | Out-File c:\newfile.txt

如果要覆盖文件,请替换目标

它的作用是创建新数组并从第2个到最后选择它