2017-08-06 36 views
0

所以我知道標題混亂,我爲此道歉。保存爲一個新的文件,使用輸入文件名,只是添加一些後綴 - Powershell

我需要做的不是寫在同一個文件中,只需要放置一個路徑和名稱就可以輕鬆完成,並且會爲該路徑創建文件。

但是,這不是我想做的事情我想借此輸入文件名和後綴添加到它因此,例如,輸入文件名是ABB添加後綴後,它會成爲ABB-Clean ...

我如何可以通過Set-Content實現,或者還有其他方式,不需要我更改代碼。

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 
$OpenFileDialog.filename 
} 
#"C:\Users\UserName\Desktop" 
$inputfile = Get-FileName 
#$inputdata = get-content $inputfile 

#$configFiles = Read-Host 'Enter Complete directory to file' 
(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 Rename-Item "Clean - " + $inputfile 

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

回答

1
  • 要分割一個文件名進入路徑和文件使用Split-Path(或使用性能目錄,名稱/基本名稱,文件對象的擴展)

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 
相關問題