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



我有一个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.

按如下方式组合cmdtype

用于输出为不带 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 与符合区域设置的正确页码一起使用

最新更新