【发布时间】:2017-12-15 17:49:42
【问题描述】:
我创建了一个新文件夹:
$NewPath = New-Item "\\...\newExampleFolder -ItemType directory
并在新的中复制一个旧的:
$ OldPath = "D:\...\old.ExampleFolder"
Copy-Item $OldPath* $NewPath -recurse
现在在新文件夹 ini 中。旧文件夹中的文件和 ini 文件中的一些路径是如何引用 ohter ini 文件的。我想更改新文件夹的ini文件中的路径。
Example ini:
[setting1] = 1
[enginge] = 2
[setting2] = \...\old.ExampleFolder\Settings\
我试过了;
$inifiles = Get-ChildItem -Path \\...\newExampleFolder\* include *.ini -
recurse
foreach($file in $inifiles)
{
(Get-Content $file.PSPath)
Foreach-Object {$file -replace
[regex]::Escape('D:\...\old.ExampleFolder\'),
('\\...\newExampleFolder\') |
set-content $file.PSPath
}
但它只更改了 ini 文件的内容,而不是 ini 文件内部的路径。 我不知道是什么,有人可以帮我吗?
【问题讨论】:
-
for each使用不正确:ForEach或ForEach-Object。 -
如果您使用PsIni 模块,您可以使用
Get-IniContent将文件读入一个非常易于编辑/更新的哈希表,并使用Out-IniFile将其保存回ini 文件。 -
我想在多台计算机上使用脚本,当我使用 PsIni 时,我必须在每台计算机上安装它。所以我更喜欢在没有 PsIni 的情况下这样做
标签: powershell replace path ini