Вы можете перебирать каждый .csv
файл из Get-ChildItem
и replace
кавычек "
с ''
, используя Set-Content
,
$files = Get-ChildItem -Path "YOUR_FOLDER_PATH" -Filter *.csv
foreach ($file in $files)
{
Set-Content -Path $file.FullName -Value ((Get-Content -Path $file.FullName -Raw) -replace '"', '')
}
Обязательно укажите путь к папке на -Path
, который сообщает Get-ChildItem
, что нужно извлечь каждый файл из этой папки
Это также быстрее , чтобы использовать переключатель -Raw
для Get-Content
, поскольку он считывает файл в одну строку и сохраняет символы новой строки. Если вы опустите этот переключатель, Get-Content
по умолчанию разделит строки по символам новой строки в массив строк
Если вы также хотите читать файлы в более глубоких подкаталогах, затем добавьте переключатель -Recurse
к Get-ChildItem
:
$files = Get-ChildItem -Path "YOUR_FOLDER_PATH" -Filter *.csv -Recurse
Кроме того, вы также можете использовать Foreach-Object
здесь:
Get-ChildItem -Path "YOUR_FOLDER_PATH" -Filter *.csv -Recurse | ForEach-Object {
Set-Content -Path $_.FullName -Value ((Get-Content -Path $_.FullName -Raw) -replace '"', '')
}
Кроме того, вы может заменить Foreach-Object
его псевдонимом %
. Однако, если вы используете VSCode и включили PSScriptAnalyzer
, вы можете получить это предупреждение:
'%' является псевдонимом 'ForEach-Object'. Псевдоним может привести к возможным проблемам и усложнить поддержку сценариев. Пожалуйста, рассмотрите возможность изменения псевдонима на его полный контент.
, который предупреждает против использования псевдонимов для удобства обслуживания. Гораздо безопаснее и удобнее использовать полную версию. Я использую псевдонимы только для быстрого использования командной строки, но при написании сценариев я использую полные версии.
Примечание: Приведенные выше решения могут привести к повреждению CSV, если некоторые строки будут заключены в кавычки. Это решение просто просматривает весь файл и заменяет каждую цитату на ''
. PowerShell 7 предлагает опцию -UseQuotes AsNeeded
для Export-Csv
, так что вы можете рассмотреть это вместо этого.