我想使用批处理文件删除csv文件中的所有特殊字符。我的csv文件只有一列只能在Google中输入关键字
例如 1.Ecommerce 墨尔本cbd? 墨尔本% 墨尔本最好的牙医!
有时我也可以使用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文件中的所有记录。
无论如何我都可以
1.仅接受来自A-Z,a-z和0-9的标准字符。
2.Or删除我可以在该字符串中放入特殊字符的所有字符串。喜欢 字符串1 = “%@#$ ^&安培;!* LT;>” 中
3.无论如何,我可以在csv文件中提及只接受标准英文字符 有没有办法使用批处理文件或任何框架来实现这一目标?
由于
答案 0 :(得分:0)
我认为这在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命令在'[^\w\s,\"\.]'
中间使用了一个小正则表达式。胡萝卜^
是一个不匹配的运算符。所以任何与单词字符\w
,空格字符\s
,空格,
,双引号\"
或句点\.
有人可能会根据您的需求找到更好的正则表达式,但我认为您可以理解。
答案 1 :(得分:0)
从技术上讲,你可以有一系列:
set variable=%variable:"=%
set variable=%variable:(=%
set variable=%variable:)=%
set variable=%variable:&=%
set variable=%variable:%=%
等等。我知道写下所有特殊字符会很烦恼。
看到字母表中的字母数量少于“特殊字符”,可以对文件/文件夹名称执行findstr,如果找到a-z中的字母为true,则写入并移动到下一个字符。
_Arescet