使用批处理文件从多个csv文件中删除特殊字符

Pen*_*nny 9 csv excel batch-file

我想使用批处理文件删除我的csv文件中的所有特殊字符.我的csv文件只有一列只能在谷歌中输入关键字

例如1.Ecommerce 2.dentist Melbourne cbd?3.墨尔本墨尔本最好的牙医!

有时我也可以有Aracbic /中文字符等等.

这里当我将这些文件添加到GoogleAdwords-Keyword Planner时,它会向我显示错误,忽略错误我错了没有.关键字的命中和避免错误我需要从我的csv文件中删除所有特殊字符.

我有数百个csv文件,并希望将更新的(没有特殊字符)文件保存到现有文件.

我试过了

@echo off
set source_folder=C:\Users\Username\Documents\iMacros\Datasources\a
set target_folder=C:\Users\Username\Documents\iMacros\Datasources\keyfords-csv-file
if not exist %target_folder% mkdir %target_folder%

for /f %%A in ('dir /b %source_folder%\*.csv') do (
    for /f "skip=1 tokens=1,2* delims=," %%B in (%source_folder%\%%A) do (
    echo %%B>>%target_folder%\%%A
    )
)

timeout /t 20
Run Code Online (Sandbox Code Playgroud)

但最终删除了csv文件中的所有记录.

无论如何我也可以

1.仅接受来自AZ,az和0-9的标准字符.

2.Or删除我可以在该字符串中放入特殊字符的所有字符串.像string1 ="?%!@#$ ^&*<>"

3.无论如何,我可以在csv文件中提及只接受标准英文字符有没有办法用批处理文件或任何框架来实现这一点?

谢谢

小智 1

我认为这在 Powershell 中要干净得多。

$sourceFolder = "C:\Users\Username\Documents\iMacros\Datasources\a"
$targetFolder = "C:\Users\Username\Documents\iMacros\Datasources\keyfords-csv-file"
MkDir $targetFolder -ErrorAction Ignore

$fileList = Dir $sourceFolder -Filter *.csv 

ForEach($file in $fileList)
{
    $file | Get-Content | %{$_ -replace '[^\w\s,\"\.]',''} | Set-Content -Path "$targetFolder\$file"
}
Run Code Online (Sandbox Code Playgroud)

我从源文件夹中取出每个文件,获取内容,替换不需要的任何字符,然后将其保存到另一个文件。'[^\w\s,\"\.]'我在替换命令的中间使用了一些正则表达式。胡萝卜^是一个不匹配运算符。因此,任何不匹配单词字符\w、空格字符\s、逗号,、双引号\"或句点的内容\.

有人可能会找到更好的正则表达式来满足您的需求,但我认为您已经明白了。