обратные косые черты в строке не заменяют оригинальные - PullRequest
0 голосов
/ 03 апреля 2019

Когда я получаю-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 , а также заменил символы в строке , но он не показывает результаты в выходном файле, когда я смотрю. Есть идеи?

Я вижу вывод, записанный на экран откуда-то с правильными косыми чертами. Я подумал, может быть, если я использую $ _ для вывода непосредственно в файл, а не изменения в исходном массиве, это исправит это. Но это тоже не сработало. Я по-прежнему вижу оригинальные косые черты в выходном файле.

Ответы [ 2 ]

1 голос
/ 03 апреля 2019

Я бы переписал это, чтобы было проще, и удалил ненужные циклы:

$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
   }
}
0 голосов
/ 03 апреля 2019

Хорошо, давайте начнем с того, что вы пытаетесь сделать, и почему это не работает. Если вы посмотрите на объект файла для любого из этих файлов ($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}
}
...