繁体   English   中英

如何调试为什么在此PowerShell脚本中无法替换多行?

[英]How to debug why the replacing of multiline is not working in this PowerShell script?

我用PowerShell脚本编写了这段代码,但是由于某种原因,它无法正常工作。 该程序本身正在运行,但是多行替换却无法正常工作-任何人都无法阐明为什么吗?

Function Get-FileName($initialDirectory)
{
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") | 
Out-Null

$OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
$OpenFileDialog.initialDirectory = $initialDirectory
$OpenFileDialog.filter = "SCD (*.scd)| *.scd"
$OpenFileDialog.ShowDialog() | Out-Null
$OpenFileDialog.filename
}

$inputfile = Get-FileName "C:\Users\Mr.Nephilim\Desktop\ABB"
#$inputdata = get-content $inputfile

#$configFiles = Read-Host 'Enter Complete directory to file'
(Get-Content $inputfile) |
Foreach-Object { 
$_ -replace  '(?ms)^\[\t\n\v\f\r ]<Private type="ABB.*?</Private>', ''
   #-replace '<Terminal .+\/>', '' `
   #-replace '<Terminal .*?>\s<\/Terminal>', '' `
   #-replace '<Private type=\"ABB(.|\n)*?<\/Private>', '' `
   #-replace '<ConnectivityNode.*?>(.|\n)*?<\/ConnectivityNode>', ''
   #-replace '<Terminal .+/>', '' `
   #-replace '<Private type="ABB.*?>.*?</Private>', '' `
   #-replace '<Terminal .+>', '' `
   #-replace '<Private type=\"ABB.*?>', '' `
   #-replace '<esld:.*?>', '' `
   #-replace '<esld:.*?\/>', '' `
   #-replace '</esld:.*?>', '' `
   #-replace '</Private.*?>', '' `
   #-replace '</Terminal.*>', '' `
   #-replace '<ConnectivityNode.*?>', '' `
   #-replace '</ConnectivityNode.*?>', '' 

} |

Set-Content $inputfile

(GC $inputfile)|?{$_.Trim(" `t")}|SC $inputfile

(S?)(| \\ S)*? 使用这种方式可以做到...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM