このスクリプトを使用して、いくつかのファイルのテキストを置き換えようとしています。PC にあるディレクトリでテストすると、ファイル全体の内容が置き換えられ続けます。私は何が欠けていますか?私はこれで非常に新しいです...
$CTPath = "C:\path1"
$ECTPath = "C:\path2"
$FileExistCT = Test-Path $CTPath
$FileExistECT = Test-Path $ECTPath
If ($FileExistCT -eq $True)
{
$filenames = @("Filepath1.vxm", "Filepath2.vxm", "Filepath3.vxm")
foreach ($file in $filenames){
$outputfile="$file" + ".out"
Get-Content $file | Foreach-object
{
$_ -replace "DISTS2D = 636.5", "DISTS2D = 642.9" `
} | Set-Content $outputfile
}
}
ElseIf ($FileExistECT -eq $True)
{
$filenames = @("Filepath1.vxm", "Filepath2.vxm", "Filepath3.vxm", "Filepath4.vxm", "Filepath5.vxm", "Filepath6.vxm", "FilePath7.vxm")
foreach ($file in $filenames){
$outputfile="$file" + ".out"
Get-Content $file | Foreach
{
$_ -replace "DISTS2D = 636.5", "DISTS2D = 642.9" `
} | Set-Content $outputfile
}
}
Else {Write-Host "VXM Files Not Found. Verify file path and try again."}
私はおそらくこれについても非常に回り道をしています..しかし、私はこれを機能させる必要があります。VXM ファイルは、古いテキスト ファイルと同じように読み込まれます。このスクリプトを使用すると、ファイル全体が次のように上書きされます。
$_ -replace "DISTS2D = 636.5", "DISTS2D = 642.9" `
しかし、基本的な置換機能を使用してテストすると、問題なく動作します。