通过PowerShell批量移除多文件中的文本限定符
批量移除TXT/CSV文件中文本限定符的解决方案
需求说明
批量遍历指定路径下所有.txt和.csv文件,移除其中的文本限定符("、'、,),无需手动逐个处理,处理后保存文件。
示例
输入示例
ID |Description |Date ================================ 0001|"xasfdsghdfshdf"|05/02/2022 0002|abc "xyz" abc |31/01/2022 0003|abcde" |01/02/2022 0004|" |01/06/2022
输出示例
ID |Description |Date ============================== 0001|xasfdsghdfshdf|05/02/2022 0002|abc xyz abc |31/01/2022 0003|abcde |01/02/2022 0004| |01/06/2022
原脚本问题分析
你找到的脚本存在几个问题导致无法运行:
- 类名拼写错误:
[System.IO.Files]应为[System.IO.File](单数形式) - 处理范围有限:只覆盖了
.csv文件,未包含.txt - 功能不全:仅移除双引号,未处理需求中的单引号和逗号
- 风险较高:直接覆盖原文件,无备份机制
修正后的可运行脚本
基础版(直接覆盖原文件)
# 替换成你的目标文件夹路径,比如 D:\YourFiles $targetPath = "YOUR_FOLDER_HERE" # 获取路径下所有.txt和.csv文件,包括子文件夹 $files = Get-ChildItem -Path $targetPath -Recurse -Include *.txt, *.csv foreach ($file in $files) { # 一次性读取文件全部内容 $content = Get-Content -Path $file.FullName -Raw # 移除三种限定符:双引号、单引号、逗号 $processedContent = $content.Replace('"', '').Replace("'", '').Replace(',', '') # 将处理后的内容写回原文件,指定UTF8编码避免乱码 Set-Content -Path $file.FullName -Value $processedContent -Encoding UTF8 # 输出处理进度 Write-Host "处理完成: $($file.FullName)" } Write-Host "所有文件处理完毕!"
安全版(生成备份文件后再处理)
如果担心误改文件,建议使用此版本,会先给原文件生成.bak后缀的备份:
# 替换成你的目标文件夹路径 $targetPath = "YOUR_FOLDER_HERE" $files = Get-ChildItem -Path $targetPath -Recurse -Include *.txt, *.csv foreach ($file in $files) { # 生成备份文件路径 $backupPath = "$($file.FullName).bak" # 复制原文件作为备份 Copy-Item -Path $file.FullName -Destination $backupPath $content = Get-Content -Path $file.FullName -Raw $processedContent = $content.Replace('"', '').Replace("'", '').Replace(',', '') Set-Content -Path $file.FullName -Value $processedContent -Encoding UTF8 Write-Host "处理完成: $($file.FullName),备份文件: $backupPath" } Write-Host "所有文件处理完毕!"
使用方法
- 打开PowerShell:按下Win+R,输入
powershell回车 - 复制上述脚本,替换
YOUR_FOLDER_HERE为实际的文件夹路径(比如D:\Data\Files) - 按回车运行即可
内容的提问来源于stack exchange,提问作者Shireeve
相关产品推荐
相关产品推荐

