Мне нужно изменить файл CSV на TSV, а также удалить разрывы строк и двойные кавычки.
Вот код:
$filePath = "C:\Users\at1704171\Documents\Infinity Scorecard PBIX\converter"
$mkdir = New-Item -ItemType Directory -Force -Path (Join-Path -Path $filePath -ChildPath 'converted')
$files = Get-ChildItem (Join-Path -Path $filePath -ChildPath "*") -Include *.csv
$sep = "`t"
$ext = '.tsv'
foreach($file in $files)
{
$filename = -Join($mkdir,"\",(Get-Item $file).BaseName,$ext)
Import-Csv $file |
ConvertTo-Csv -NoTypeInformation -Delimiter $sep |
% { $_.Replace("`r"," ").Replace("`n"," ").Replace('"',"") } |
Out-File -FilePath $filename -Encoding utf8
}
это в основном конвертация файла CSV в TSV, но также удаление разрывов строк и двойных кавычек. Однако я заметил, что в строке есть несколько «табуляций» (`t), поэтому мне нужно было вставить еще одну строку между« Импорт »и« Конвертировать », чтобы заменить эти« табуляции »пробелом
Я не понять, как работает синтаксис, поэтому я буквально скопировал строку ниже «Преобразовать», так как он выполняет ту же функцию и сделал это, но выдает ошибку
$filePath = "C:\Users\at1704171\Documents\Infinity Scorecard PBIX\converter"
$mkdir = New-Item -ItemType Directory -Force -Path (Join-Path -Path $filePath -ChildPath 'converted')
$files = Get-ChildItem (Join-Path -Path $filePath -ChildPath "*") -Include *.csv
$sep = "`t"
$ext = '.tsv'
foreach($file in $files)
{
$filename = -Join($mkdir,"\",(Get-Item $file).BaseName,$ext)
Import-Csv $file |
% { $_.Replace("`t"," ") } | --this is the line I added
ConvertTo-Csv -NoTypeInformation -Delimiter $sep |
% { $_.Replace("`r"," ").Replace("`n"," ").Replace('"',"") } |
Out-File -FilePath $filename -Encoding utf8
}
здесь очень важна чья-либо помощь, спасибо, ребята