Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 批量将文件编码从UTF16更改为UTF8_Batch File_Utf 8 - Fatal编程技术网

Batch file 批量将文件编码从UTF16更改为UTF8

Batch file 批量将文件编码从UTF16更改为UTF8,batch-file,utf-8,Batch File,Utf 8,我有一些UTF16大端格式的CSV文件。我需要写一个批处理脚本来转换它在UTF8 如果没有外部程序,或者使用操作系统附带的外部程序(因此可以一直在那里),是否可以做到这一点?当然可以。只需将UTF-16 BE BOM替换为UTF-8 BOM即可 @echo off setlocal set "csvfile=test.csv" :: store current console codepage to var for /f "tokens=2 delims=:" %%I in ('chcp')

我有一些UTF16大端格式的CSV文件。我需要写一个批处理脚本来转换它在UTF8


如果没有外部程序,或者使用操作系统附带的外部程序(因此可以一直在那里),是否可以做到这一点?

当然可以。只需将UTF-16 BE BOM替换为UTF-8 BOM即可

@echo off
setlocal

set "csvfile=test.csv"

:: store current console codepage to var
for /f "tokens=2 delims=:" %%I in ('chcp') do set "_codepage=%%I"
:: temporarily change console codepage to UTF-8
>NUL chcp 1252

<"%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
)

:: restore console to original codepage
>NUL chcp %_codepage%

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

echo Fixed.

I'll leave it as an exercise for the O.P. to make this loop through multiple CSV files.
@echo关闭
setlocal
设置“csvfile=test.csv”
::将当前控制台代码页存储到变量
对于/f“tokens=2 delims=:”('chcp')中的%%I do set“\u代码页=%%I”
::暂时将控制台代码页更改为UTF-8
>NUL chcp 1252
fixed.csv echo(!firstLine:*ÿ=ï»!)!
端部
对于/f“usebackq skip=1 delims=“%%I in”(“%csvfile%”)do(
>>已修复.csv回音(%%I)
)
::将控制台还原到原始代码页
>NUL chcp%\u代码页%
>NUL move/y fixed.csv“%csvfile%”
回声修正。
我将把它作为一个练习留给O.P.通过多个CSV文件进行循环。

Thank Rojo可能重复。但仍然存在一些问题。在执行代码后,我遇到了一个错误:系统无法写入指定的设备。@ARP这可能是系统代码页问题。我只是添加了几行代码,将代码页更改为西欧拉丁语,修复BOM,然后将代码页更改回原来的方式如果没有,那么我猜错误正是它所说的,即您没有对您试图写入的文件或目录的写入权限。