Powershell перебирает две директории и записывает содержимое в CSV - PullRequest
0 голосов
/ 06 июня 2018

Мне нужно записать содержимое двух каталогов в CSV, где Directory 1 - это столбец 1, а Directory 2 - это столбец 2.

Я довольно новичок в Powershell, поэтому, пожалуйста, будьте осторожны.

Вот что я попробовал:

$source_loc = "Z:\Dir1"
$dest_loc = "Y:\Dir2"
$outfile = "C:\Outfile.csv"

$source = get-ChildItem $source_loc
$dest = get-ChildItem $dest_loc

Remove-Item $outfile -ErrorAction Ignore
Add-Content $outfile "Old URL, New URL"

$max = ( $source | Measure-Object ).Count

For ( $i = 0; $i -lt $max; $i++ )
{
    $cur = $source | Select-Object -Index $i | Select Name
    $old = "http://thisisawebsite.web/oldurl/" + $cur

    $cur = $dest | Select-Object -Index $i | Select Name
    $new = "http://thisisawebsite.web/newurl/" + $cur
    $line = $old + ',' + $new
    Add-Content $outfile $line
} 

Проблема, с которой я столкнулся, заключается в том, что сейчас выход Outfile.csv выглядит следующим образом:

http://thisisawebsite.web/oldurl/@{Name=File1.ext},http://thisisawebsite.web/newurl/@{Name=File1.ext}
http://thisisawebsite.web/oldurl/@{Name=File2.ext},http://thisisawebsite.web/newurl/@{Name=File2.ext}

Когда я хочу, чтобывыглядит так:

http://thisisawebsite.web/oldurl/File1.ext,http://thisisawebsite.web/newurl/File1.ext
http://thisisawebsite.web/oldurl/File2.ext,http://thisisawebsite.web/newurl/File2.ext

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

Спасибо!^. ^

1 Ответ

0 голосов
/ 06 июня 2018

Я верю, что есть несколько простых способов сделать то, что вы пытаетесь сделать.Тем не менее, быстрый и грязный способ сделать эту работу - это расширение свойства name, которое вы выбираете.Попробуйте этот небольшой фрагмент в двух отмеченных строках:

$cur = $source | Select-Object -Index $i | Select -ExpandProperty Name


$cur = $dest | Select-Object -Index $i | Select -ExpandProperty Name

. Вместо хеш-таблицы следует выбрать значение для свойства "name".

Еще одна полезная вещь, которую следует отметить длябудущее заключается в том, что с двойными кавычками вам не нужно вручную объединять переменную и строку в powershell.

$new = "http://thisisawebsite.web/newurl/" + $cur

То же, что

$new = "http://thisisawebsite.web/newurl/$cur"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...