我正在编写一个Powershell脚本来纠正包含错误文件路径的许多配置和项目文件。
文件已向上移动一级,例如以下字符串
“$(ProjectDir)..\..\..\..\bin\; $(ProjectDir)..\..\..\source\
”
必须成为
“$ (ProjectDir)..\..\..\bin\; $(ProjectDir)..\..\source\"
我试过用替换功能和正则表达式做到这一点,但由于我最多是初学者,我没有找到解决方案。
任何想法如何实现这一目标?
答案 0 :(得分:0)
您必须提供有关配置如何组织的更多详细信息,但您可以执行以下操作:
$a="C:\users\manojs\desktop\bin"
$leaf = split-path $a -leaf
$root = split-path (split-path $a)
$newPath = Join-Path $root $leaf #will give c:\users\manojs\bin
$a
可以从读取行等获得。如果路径在同一行,请使用;
进行拆分。构造一个$newa
然后替换文件。
使用正则表达式,您可以执行以下操作:
$a -replace "\\[^\\]*?\\bin","\bin"
答案 1 :(得分:0)
另一种(但类似的)方式,只是为了展示Powershell的灵活性:
$a= <some path>
$newPath = Join-Path (Get-Item (Split-Path $a)).Parent.Fullname (Split-Path -Leaf $a)
答案 2 :(得分:0)
首先,抱歉:我没有注意到我输入的文字已经格式化,因此没有正确显示路径。但感谢您的所有回复。
我找到的解决方案是:
"gugus..\..\..\..\3rdParty\Noah3;gigus..\..\..\Platform\source\Platform.Launcher;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>" -replace "\.\.\\(?'match'(\.\.\\)+)", "`${match}"