所以我知道标题令人困惑,我为此道歉。
我需要做的就是不要写在同一个文件中,只需输入一个路径和名称即可轻松完成,它将在该路径上为我创建文件。
但那不是我想做的,我想取输入文件名并为其添加后缀,例如输入文件名为ABB
后添加后缀将成为{{1 } ...
我如何通过Set-Content实现这一目标,或者是否有其他方式不需要我更改代码。
ABB-Clean
答案 0 :(得分:1)
Split-Path
(或使用属性目录,名称/ BaseName,文件对象的扩展名)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|CID (*.cid)| *.cid|ICD (*.icd) | *.icd | All Files| *.*"
$OpenFileDialog.ShowDialog() | Out-Null
return $OpenFileDialog.filename
}
$inputfile = Get-Item (Get-FileName)
$OutputFile = Join-Path (Split-Path $inputfile) ("{0}-Clean{1}" -f $inputfile.BaseName,$inputfile.Extension)
(Get-Content $inputfile -Raw) | Foreach-Object {
$_ -replace '<Terminal .+\/>', '' `
-replace '(?s)<Terminal .*?>(.|\s)*?</Terminal>', '' `
-replace '(?s)<Private type="ABB.*?>(.|\s)*?</Private>', '' `
-replace '(?s)<ConnectivityNode.*?>(.|\s)*?</ConnectivityNode>', ''
} | Set-Content $OutputFile