使用batch file从多个csv文件中删除特殊字符

我想使用batch file删除我的csv文件中的所有特殊字符。 我的CSV文件只有一列只能在谷歌input的关键字

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

有时我也可以有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 

但结束了从csv文件中删除所有logging。

无论如何,我也可以

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

2.或删除所有可以在该string中放置特殊字符的string。 像string1 =“?%!@#$ ^&* <>”

或反正在那里我可以提到在CSV文件只接受标准英文字符有没有办法使用batch file或任何框架来实现这一点?

谢谢

我认为这在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" } 

我从源文件夹中获取每个文件,获取内容,replace不需要的任何字符,并将其保存到另一个文件。 我用正则expression式在中间'[^\w\s,\"\.]'用replace命令。胡萝卜^是一个不匹配的操作符,所以任何不匹配的单词字符\w ,空格字符,昏迷,双引号\" ,或句点\.

有人可能会find一个更好的正则expression式来满足你的需求,但是我认为你明白了。

技术上你可以有一系列的:

 set variable=%variable:"=% set variable=%variable:(=% set variable=%variable:)=% set variable=%variable:&=% set variable=%variable:%=% 

等等。 我知道这将是一个烦恼写所有的特殊字符..

看到字母表中的字母比“特殊字符”更less,findtr可以在文件/文件夹名称上完成,如果来自az的字母被发现,写入并移动到下一个字符。

_Arescet