您可以使用Set-Content 从Get-ChildItem 和replace 与" 和'' 中迭代每个.csv 文件。
$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 获取此文件夹中的每个文件
为Get-Content 使用-Raw 开关也更快,因为它将文件读入一个字符串并保留换行符。如果省略此开关,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 为 Export-Csv 提供了一个 -UseQuotes AsNeeded 选项,因此您可以改为查看该选项。