我有一个CSV文件,其中前两个字符是特殊字符。我需要从文件中删除它们。需要为此编写批处理脚本。请建议。
þÿLEAD_CO_MNE〜BRANCH_CO_MNE〜MIS_DATE〜@ ID〜LIMIT_ID〜PROCESS_DATE〜
答案 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)
将cmd
和type
合并如下:
输出为没有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
与符合语言环境的正确页码