字符串中的反斜杠不替换原始斜杠
reversing slashes in string not replacing original
当我用 get-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, and also replace chars in string,但是当我查看时它没有在输出文件中显示结果。有什么想法吗?
我看到输出从某个地方写入屏幕,斜线正确。我想也许如果我使用 $_ 直接输出到文件而不更改原始数组,它就会修复它。但它也没有用。我仍然在输出文件中看到原始斜杠。
我会重写它以使其更简单并删除不必要的循环:
$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
}
}
好吧,让我们从您尝试执行的操作及其不起作用的原因开始。如果您查看任何这些文件 ($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}
}
当我用 get-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, and also replace chars in string,但是当我查看时它没有在输出文件中显示结果。有什么想法吗?
我看到输出从某个地方写入屏幕,斜线正确。我想也许如果我使用 $_ 直接输出到文件而不更改原始数组,它就会修复它。但它也没有用。我仍然在输出文件中看到原始斜杠。
我会重写它以使其更简单并删除不必要的循环:
$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
}
}
好吧,让我们从您尝试执行的操作及其不起作用的原因开始。如果您查看任何这些文件 ($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}
}