【发布时间】:2019-08-25 08:54:11
【问题描述】:
当我通过 get-childitem 获取 dir 内容时,斜线在 html 验证中的方向错误。我试图通过进行字符替换来解决这个问题,但由于某种原因,每次我尝试打印出斜线时,它的方向都不正确。这是我目前的尝试:
$filenameOut = "out.html"
#get current working dir
$cwd = Get-ScriptDirectory #(Get-Location).path #PSScriptRoot #(Get-Item -Path ".").FullName
$filenamePathOut = Join-Path $cwd $filenameOut
$InitialAppointmentGenArr = Get-ChildItem -Path $temp
foreach($file in $InitialAppointmentGenArr)
{
$fileWithoutExtension = [io.path]::GetFileNameWithoutExtension($file)
#$file = $file -replace "\\", "/" #this didn't work
$file | % {
$_.FullName.ToString() | % {$_ -replace '\\','/'} #Replace("\\","/")
$temp = '<li><a href="' + $_.FullName + '" target="_app">' + $fileWithoutExtension + '</a></li>'
Add-Content -Path $filenamePathOut -Value $temp
}
}
当我查看输出文件时,它没有显示反斜杠。
我查看了split path 和replace chars in string,但是当我查看时它没有在输出文件中显示结果。有什么想法吗?
我看到从某处写入屏幕的输出带有正确的斜线。我想也许如果我使用 $_ 直接输出到文件而不改变原始数组,它会修复它。但它也没有奏效。我仍然在输出文件中看到原始斜杠。
【问题讨论】:
-
您的
-replace操作并未将该更改存储在.fullname属性中。因此,当您在下一行设置$temp时,您仍然指的是旧的.fullname属性。您应该删除整个|%{ },因为$file已经是一个对象。然后,您的$temp分配应使用($file.fullname -replace "\\",'/')代替$_.Fullname。
标签: powershell replace slash