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

我有以下的Windows批处理命令作为更大的batch file的一部分:

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

正如您所看到的,它将特定目录中的所有SQL脚本合并为一个,以便在数据库构build过程中执行该脚本。

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

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

你必须像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

 copy *.sql dbscript.sql