需要通过批处理脚本替换CSV中的特殊字符串

时间:2015-01-23 16:30:18

标签: csv batch-file

我有一个CSV文件,其中前两个字符是特殊字符。我需要从文件中删除它们。需要为此编写批处理脚本。请建议。

þÿLEAD_CO_MNE〜BRANCH_CO_MNE〜MIS_DATE〜@ ID〜LIMIT_ID〜PROCESS_DATE〜

3 个答案:

答案 0 :(得分:0)

这看起来像unicode bom chars sequense。并且您需要将其转换为纯文本。使用记事本打开文件转到文件 - >保存和编码'选择ANSI。 不确定WinXP是否有此选项。

答案 1 :(得分:0)

如果您希望脚本为您处理此问题,请使用set /P "variable=" <csvfile将变量设置为CSV文件的第一行。使用string manipluation删除BOM,然后使用for /f "skip=1"附加文件的其余部分。

@echo off
setlocal

set "csvfile=test.csv"

<"%csvfile%" set /p "firstLine="

setlocal enabledelayedexpansion
>fixed.csv echo(!firstLine:*ÿ=!
endlocal

for /f "usebackq skip=1 delims=" %%I in ("%csvfile%") do (
    >>fixed.csv echo(%%I
)

>NUL move /y fixed.csv "%csvfile%"

echo Fixed.

答案 2 :(得分:0)

cmdtype合并如下:

输出为没有BOM的ANSI文件

CHCP 1252 >NUL
start "" "%comspec%" /D /A /C type "path\file_with_BOM.csv">"path\file_-_BOM.csv"

输出为UNICODE文件而不包含BOM(这是字节顺序的问题:Windows默认为 Little-Endian UTF-16LE,但您的þÿ BOM看起来很像比如 Big-Endian UTF-16BE

CHCP 1252 >NUL
start "" "%comspec%" /D /U /C type "path\file_with_BOM.csv">"path\file_-_BOM.csv"

代码页1252是西欧拉丁语,我的应该是1250 东欧拉丁语;将CHCP与符合语言环境的正确页码

一起使用