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

9
我希望使用批处理文件删除CSV文件中的所有特殊字符。我的CSV文件只有一个关键词列,用于输入Google搜索。
例如: 1.电子商务 2.牙医墨尔本cbd? 3.牙医墨尔本% 4.墨尔本最好的牙医!
有时候我也会有阿拉伯语/中文字符等等。
当我将这些文件添加到Google Adwords-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.或者删除所有包含特殊字符的字符串。例如string1="?%!@#$^&*<>"

3.或者有没有办法在csv文件中指定只接受标准英文字符?是否可以使用批处理文件或任何框架来实现?

谢谢


2
你能定义一下“特殊字符”或者“普通字符”吗? - Magoo
我认为他在谈论标准批处理毒瘤字符 - 括号、感叹号、和号、管道符、插入符、问号和星号。 - SomethingDark
1
我想将这些CSV文件上传到Google关键字规划工具。它显示一个错误,说:“关键字不能包含非标准字符,如:!@%,在第1行:!!!!??????关键字不能包含非标准字符,如:!@%,在第905行:ستائر ÙÙتÙرÙØ©”。不确定该怎么做。 - Penny
1
这个任务最好用比批处理更高级的语言来解决。 - Fr0sT
2个回答

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"
}

我会从源文件夹提取每个文件的内容,替换掉所有不需要的字符,并将其保存到另一个文件中。我在中间使用了一个小型的正则表达式 '[^\w\s,\"\.]' 来用replace命令进行匹配。脱字符号 ^ 表示非匹配操作符。因此,任何与单词字符 \w、空格字符 \s、逗号 ,、双引号 \" 或句点 \. 不匹配的字符都会被替换掉。
也许有人可以为您找到更适合的正则表达式,但我认为您已经明白了这个概念。

你能用批处理方式发布答案吗?用户@Penny正在寻求使用批处理文件的帮助。 - Lizz

0

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

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

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

考虑到字母表中的字母比“特殊字符”少,可以在文件/文件夹名称上执行findstr操作,如果找到a-z中的字母,则写入并移动到下一个字符。

_Arescet


也许你可以使用一个 for 循环.... for /f %%p in (^= ^( ^) ^& %%) do set variable=%variable:%%p=% - user6250760

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接