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

标签 windows encoding batch-file

我将以下 Windows 批处理命令作为较大批处理文件的一部分:

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

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

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

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

最佳答案

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

或者,如果由于您正在键入文件并重定向输出而引入编码问题,您也可以尝试类似下面的方法,它应该保留编码(因为它不输出然后再写一遍):

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

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

关于windows - 如何在 Windows 批处理脚本中更改重定向文件的文件编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1161211/

相关文章:

c++ - CreateFileMapping 返回 ERROR_INVALID_HANDLE

c# - 如何构建可以在窗口之间拖放用户控件的 WPF 应用程序?

regex - 如何在 powershell 中复制与正则表达式匹配的文件名?

java - 使 Java 中的 Scanner 对象的西里尔文可读

windows-7 - Windows启动并执行格式时在后台运行批处理文件

windows - 使用批处理文件复制名称仅包含数字的文件

windows - UWP package.appmanifest Assets 生成器扩展了我的图像

java - 文件已以错误的编码加载:android studio中的 'UTF-8'

windows批量比较md5sum和md5文件内容

php - 如何在 PHP 中替换 Microsoft 编码的引号