我有一个监视特定进程的脚本,我有一个可以输出它的工作脚本;
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
任何帮助将不胜感激
答案 0 :(得分:2)
Trim
和SubString
等方法需要对象进行操作,您不会告诉脚本您指的是哪个对象。在上下文中,您需要为结果对象指示$_
。此外,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()