试图用powershell解析输出文件

时间:2015-02-03 18:39:48

标签: powershell

我有一个监视特定进程的脚本,我有一个可以输出它的工作脚本;

0   0   0

我正在使用此脚本尝试使用此脚本

在第一个“0”之后剪切所有内容
Get-Content –path c:\batchjobs\location\test.txt | Trim(Char[8,60]) > c:\batchjobs\location\test1.txt

powershell ise保持错误输出,这是输出,来自:

PS C:\batchjobs\location> C:\batchjobs\location\TestTrim.ps1
The term 'Trim' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, 
or if a path was included, verify that the path is correct and try again.
At C:\batchjobs\location\TestTrim.ps1:2 char:58
+ Get-Content –path c:\batchjobs\location\test.txt | Trim <<<< (Char[8,60]) > c:\batchjobs\location\test1.txt
    + CategoryInfo          : ObjectNotFound: (Trim:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:2)

TrimSubString等方法需要对象进行操作,您不会告诉脚本您指的是哪个对象。在上下文中,您需要为结果对象指示$_。此外,Get-Content将返回文件的所有行,使用For-Each a.k.a %对其进行迭代。

Get-Content -path c:\batchjobs\location\test.txt | % { $_.Substring(0,7).Trim(); } > c:\batchjobs\location\test1.txt

答案 1 :(得分:0)

假设您的文件大小使您无法使用get-content开始出现内存错误,那么这种方法很好。如果你想要一个巨大文件的前8个字符(可能是1GB大小?),那么下面的方法可能会更灵活一些:

$stream = [System.IO.StreamReader]"C:\Users\Ryan\Desktop\test.csv"
$i=0

#read characters until we get to 8 or end of the stream. won't load the while file into memory
$output = while(($i -lt 8) -and (!$stream.EndOfStream)){ [char]$stream.Read(); $i++ }
$stream.close()