gpt4 book ai didi

powershell - 如何读取文件夹中的每个csv文件并从csv文件中删除引号字符?

转载 作者:行者123 更新时间:2023-12-02 23:50:14 25 4
gpt4 key购买 nike

如何读取每个csv文件的特定文件夹?执行以下脚本时,只会删除一个csv文件的引号字符。

$file="C:\test\IV-1-2020-04-02.csv"

(GC $file) | % {$_ -replace '"', ''} > $file

Get-ChildItem -Path C:\test\ -Filter '*.csv'

仅输出将删除引号“IV-1-2020-04-02.csv”。如果我使用不同的文件名怎么办?

最佳答案

您可以使用 .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,则可能会收到以下警告:

'%' is an alias of 'ForEach-Object'. Alias can introduce possible problems and make scripts hard to maintain. Please consider changing alias to its full content.



警告不要使用别名来维护。使用完整版本更安全,更便携。我仅使用别名来快速使用命令行,但是在编写脚本时使用的是完整版本。

注意:如果某些行需要引用,上述解决方案可能会破坏CSV。该解决方案仅遍历整个文件,并用 ''替换每个引号。 PowerShell 7 -UseQuotes AsNeeded 提供了 Export-Csv选项,因此您可以考虑使用它。

关于powershell - 如何读取文件夹中的每个csv文件并从csv文件中删除引号字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61037169/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com