我正在尝试创建powershell脚本,该脚本将根据输入参数(计数器,文件名)创建新文件并在其中添加参数。
对于以Ab开头的每个标题行,将创建一个新文件,并从输入文件中添加该行
一旦该行已经写好,下次不会再写入新文件。结束行以Br开头,但是我在调试时遇到错误
[DBG] GT;>>停在:$ _。PSParentPath.Replace(“Microsoft.PowerShell.Core \ FileSystem ::”,“”)
代码示例
$fileinput = Get-Content c:\abc.txt
$fileinput1 = Get-Content c:\abc1.txt
foreach($line in $fileinput)
{
$array = $line.split(',')
test-param $array[0] $array[1]
}
function test-param {
param ([int]$input1, [String]$input2)
$chunk = 0
foreach($line in $fileinput1) {
if ($line.substring(0,2) -eq 'Ab')
{
$chunk++;
New-Item -Itemtype 'File' -Path "d:\$input2"
}
if ($chunk -eq $input1 -And $line.substring(0,2) -eq 'Br')
{
Add-Content -Path "d:\$input2" -Value $line
break
}
Add-Content -Path "c:\$input2" -Value $line
}
}
答案 0 :(得分:0)
我建议强制$ input2键入" string" - 如果它不是一个字符串,它就不能使用该变量来构造路径。
真的需要查看两个输入文件的一些示例内容才能进一步评论。
纯粹从优化的角度来看,我会将$ fileinput1的内容加载到test-param函数之外的数组中。每次调用test-param函数时,都会再次加载整个文件,速度会慢一些,会增加内存使用量。