如何在Windows批处理脚本中更改重定向文件的文件编码?

时间:2009-07-21 19:23:48

标签: windows encoding batch-file

我有以下windows batch命令作为更大批处理文件的一部分:

type *.sql > dbScript.txt
ren dbScript.txt dbScript.sql

正如您所看到的,它将特定目录中的所有SQL脚本连接成一个,以便在数据库构建过程中执行它。

我的问题是我现在在其中一个SQL脚本文件中有非ANSI字符,但dbScript.txt(以及随后的dbScript.sql)被编码为ANSI。

如何将输出文件的编码更改为UTF-8?

2 个答案:

答案 0 :(得分:3)

您必须运行iconv之类的程序来转换输出文件。 cmd仅支持OEM代码页(默认情况下)或UTF-16(/u参数cmd)作为输出编码。

或者,如果由于您type文件并重定向输出而引入了编码问题,您还可以尝试类似下面的内容,它应保留编码(因为它不会输出然后写入再次发短信):

setlocal enableextensions enabledelayedexpansion
set LIST=NUL
for %%f in (*.sql) do set LIST=!LIST!+%%f
copy %LIST% dbScript.sql
endlocal

这将首先生成一个加号分隔的SQL文件列表,然后使用copy来连接它们。

答案 1 :(得分:2)

您是否尝试过使用copy

copy *.sql dbscript.sql