检查文件夹中的名称并使用 powershell 循环删除 csv 中的双引号
check names in a folder and delete double quotes in a csv using a powershell loop
我正在尝试循环访问特定文件夹中的文件并删除其中的双引号
任何人都可以解释这个,我这样做了:
Get-ChildItem "c:\temp\test\" -filter SplitCSV* |
ForEach-Object {
(Get-Content $_) -replace '(?m)"([^,]*?)"(?=,|$)', '' | Set-Content $_ }
出现此错误消息:
Get-Content : Impossible de trouver le chemin d'accès «
C:\Users\cptspinstalldev\SplitCSV_03-08-2020_9.csv», car il n'existe pas.
所以我将我的文件移动到 C:\Users\cptspinstalldev\ 并且它有效但为什么我的 get-childitems 没有在正确的文件夹中查找,即 c:\temp\test\
看来我不在正确的文件夹中,所以愚蠢
在 Powershell 中,Get-Content
和 Set-Content
函数需要完整路径。 $_
变量是一个 FileInfo
或 DirectoryInfo
对象。尝试使用 $_.FullName
传递完整路径,如下所示:
Get-ChildItem "c:\temp\test\" -filter SplitCSV* |
ForEach-Object {
(Get-Content $_.FullName) -replace '(?m)"([^,]*?)"(?=,|$)', '' | Set-Content $_.FullName }
由于删除现有 CSV 文件中的所有引号是不安全的,请考虑使用我的功能 ConvertTo-CsvNoQuotes 为您完成此操作。
在脚本之上添加该函数并执行:
Get-ChildItem -Path "c:\temp\test" -Filter 'SplitCSV*.csv' -File |
ForEach-Object {
(Import-Csv -Path $_.FullName) | ConvertTo-CsvNoQuotes | Set-Content $_.FullName
}
如果您使用的是 PowerShell 7.0,则可以不用该函数,只需编码为
Get-ChildItem -Path "c:\temp\test" -Filter 'SplitCSV*.csv' -File |
ForEach-Object {
$file = $_.FullName
(Import-Csv -Path $file) | Export-Csv -Path $file -UseQuotes AsNeeded
}
我正在尝试循环访问特定文件夹中的文件并删除其中的双引号
任何人都可以解释这个,我这样做了:
Get-ChildItem "c:\temp\test\" -filter SplitCSV* |
ForEach-Object {
(Get-Content $_) -replace '(?m)"([^,]*?)"(?=,|$)', '' | Set-Content $_ }
出现此错误消息:
Get-Content : Impossible de trouver le chemin d'accès «
C:\Users\cptspinstalldev\SplitCSV_03-08-2020_9.csv», car il n'existe pas.
所以我将我的文件移动到 C:\Users\cptspinstalldev\ 并且它有效但为什么我的 get-childitems 没有在正确的文件夹中查找,即 c:\temp\test\
看来我不在正确的文件夹中,所以愚蠢
在 Powershell 中,Get-Content
和 Set-Content
函数需要完整路径。 $_
变量是一个 FileInfo
或 DirectoryInfo
对象。尝试使用 $_.FullName
传递完整路径,如下所示:
Get-ChildItem "c:\temp\test\" -filter SplitCSV* |
ForEach-Object {
(Get-Content $_.FullName) -replace '(?m)"([^,]*?)"(?=,|$)', '' | Set-Content $_.FullName }
由于删除现有 CSV 文件中的所有引号是不安全的,请考虑使用我的功能 ConvertTo-CsvNoQuotes 为您完成此操作。
在脚本之上添加该函数并执行:
Get-ChildItem -Path "c:\temp\test" -Filter 'SplitCSV*.csv' -File |
ForEach-Object {
(Import-Csv -Path $_.FullName) | ConvertTo-CsvNoQuotes | Set-Content $_.FullName
}
如果您使用的是 PowerShell 7.0,则可以不用该函数,只需编码为
Get-ChildItem -Path "c:\temp\test" -Filter 'SplitCSV*.csv' -File |
ForEach-Object {
$file = $_.FullName
(Import-Csv -Path $file) | Export-Csv -Path $file -UseQuotes AsNeeded
}