当我得到-childitem来获取目录内容时,斜杠的方向是错误的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,但是当我看的时候它没有在输出文件中显示结果。任何的想法?
我看到输出写入屏幕的地方有正确的斜线。我想也许如果我使用$ _直接输出到文件而不是更改原始数组,它会解决它。但它也没有用。我仍然在输出文件中看到原始斜杠。
好吧,让我们从你试图做的事情开始,以及为什么它不起作用。如果你查看任何文件($file|get-member
)的文件对象,你会发现FullName
属性只有get
方法,没有set
方法,所以你不能改变那个属性。因此,如果不重命名源文件并再次获取文件信息,您永远不会更改该属性。
知道如果你想用替换的斜杠捕获路径,你需要在变量中捕获替换的输出。然后,您可以使用它来构建字符串。
$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)
{
$filePath = $file.FullName -replace "\\", "/"
'<li><a href="' + $filePath + '" target="_app">' + $file.BaseName + '</a></li>' | Add-Content -Path $filenamePathOut}
}
我会重写这个更简单并删除不必要的循环:
$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)
$temp = '<li><a href="' + ($file.FullName -replace "\\",'/') + '" target="_app">' + $fileWithoutExtension + '</a></li>'
Add-Content -Path $filenamePathOut -Value $temp
}
}