我有一个CSV文件,其中开头的前2个字符是特殊字符。我需要从文件中删除它们。需要为此编写批处理脚本。请指教。
þ ÿLEAD_CO_MNE~BRANCH_CO_MNE~MIS_DATE~@ID~LIMIT_ID~PROCESS_DATE~
看起来像 unicode bom chars sequense。您需要将其转换为纯文本。使用记事本打开文件,转到文件>保存,然后在"编码"中选择ANSI
。不确定 WinXP 是否有此选项。
如果您希望脚本为您处理此问题,请使用 set /P "variable=" <csvfile
将变量设置为 CSV 文件的第一行。 使用字符串操作去除 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.
按如下方式组合cmd
和type
:
用于输出为不带 BOM ANSI
文件
CHCP 1252 >NUL
start "" "%comspec%" /D /A /C type "pathfile_with_BOM.csv">"pathfile_-_BOM.csv"
对于输出为没有 BOM UNICODE
文件(这是字节序的问题:Windows 默认为 Little-Endian UTF-16LE
,但您的 þÿ
BOM 看起来像 Big-Endian UTF-16BE
)
CHCP 1252 >NUL
start "" "%comspec%" /D /U /C type "pathfile_with_BOM.csv">"pathfile_-_BOM.csv"
代码页 1252 是西欧拉丁语,我的应该是 1250 东欧拉丁语;将 CHCP
与符合区域设置的正确页码一起使用