我对Powershell /编程非常陌生,所以请多多包涵。我有一个错误,该错误将新的重命名路径附加到换行符,而没有其余的路径。控制台输出:
/content/pizza/en/ingredients/
helloworld/menu-eng.html
我想要的是:
/content/pizza/en/ingredients/helloworld/menu-eng.html
下面的代码应该做的是重命名一堆路径。现在,testName是硬编码的,但是在我使其正常工作之后,它将是动态的。
我的代码:
$testName = "helloworld"
$text = (Get-Content W:\test\Rename\rename.csv) | Out-String
$listOfUri = Import-Csv W:\test\Rename\rename.csv
foreach ($element in $listOfUri) {
if ($element -match "menu-eng.html") {
$elementString = $element.'ColumnTitle' | Out-String
$elementString = $elementString.Replace('menu-eng.html', '')
$varPath1 = $elementString
$elementString = $elementString.Insert('', 'http://www.pizza.com')
$elementName = ([System.Uri]$elementString).Segments[-1]
$elementString = $elementString.Replace($elementName, '')
$elementString = $elementString.Replace('http://www.pizza.com', '')
$varPath2 = $elementString.Insert($elementString.Length, $testName + '/')
$text = $text.Replace($varPath1.Trim(), $varPath2)
}
}
$text
假设您的.csv
文件如下所示:
ColumnTitle,Idk
/content/pizza/en/ingredients/SPAM/menu-eng.html,Stuff
然后:
$testName = 'helloworld'
foreach ($row in Import-CSV d:\rename.csv) {
$bit = $row.'ColumnTitle'.Split('/')[-2]
$row.'ColumnTitle'.replace($bit, $testName)
}
我不知道您其余所有代码的用途,尤其是我之前的评论,您的代码行:
$text = (Get-Content W:\test\Rename\rename.csv) | Out-String
正在将文件中的所有行(包括标题)都$text
放入/array/
其中。您仍然.Replace()
可以在PowerShell中使用它,但是它将在每一行上进行替换。我不太清楚如何为您提供输出,但是它将为输入文件中的每一行提供多行。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句