我对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
答案 0 :(得分:2)
假设您的.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/
,包括标题。您仍然可以在PowerShell中使用.Replace()
,但它会在每一行上进行替换。我不太清楚如何为您提供输出,但它会为输入文件中的每一行提供多行。