繁体   English   中英

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

[英]Delete special characters from multiple csv files using 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

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

无论如何我也可以

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

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

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

谢谢

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

我从源文件夹中获取每个文件,获取内容,替换任何不需要的字符,并将其保存到另一个文件中。 我在替换命令的中间'[^\\w\\s,\\"\\.]'使用了一个小正则表达式。胡萝卜^是一个不匹配的运算符。所以任何与单词字符\\w ,空格不匹配的东西字符\\s ,昏迷,双引号\\"或句号\\.

有人可能会根据您的需求找到更好的正则表达式,但我认为您可以理解。

从技术上讲,你可以有一系列:

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

等等。 我知道写下所有特殊字符会很烦人。

看到字母表中的字母数量少于“特殊字符”,可以对文件/文件夹名称进行查找,如果发现来自az的字母为真,则写入并移动到下一个字符。

_Arescet

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM