我使用变量$ 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
答案 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个到最后选择它