我需要打开一个.csv文件,并立即使用.bat以相同的名称保存它(覆盖它)。
这可能听起来很愚蠢,但这是我发现更改.csv文件编码的最简单方法(从ANSI到UTF-8)。
如果我输入notepad file-name.csv,它会打开.csv文件,但是如何保存呢?
答案 0 :(得分:1)
您可以使用Linux工具iconv
的Windows端口,它可以将文本文件从一种编码转换为另一种编码。
gnuwin32 project包含所有主要GNU实用程序的端口,包括iconv
,可从此处作为单个包下载:
答案 1 :(得分:1)
对于纯脚本解决方案,这是一个混合批处理/ javascript解决方案(改编自之前的vbs答案)。根据需要进行调整并保存为.cmd
文件。
@if (@this==@isBatch) @then
@echo off
cscript //nologo //e:jscript "%~f0" ^
/input:"input_file.csv" ^
/output:"output_file.csv" ^
/from:"x-ansi" ^
/to:"utf-8"
exit /b
@end
var adTypeText = 2;
var adSaveCreateOverWrite = 2;
var inputFile = WScript.Arguments.Named.Item('input');
var outputFile = WScript.Arguments.Named.Item('output');
var from = WScript.Arguments.Named.Item('from');
var to = WScript.Arguments.Named.Item('to');
var inputStream = WScript.CreateObject('adodb.stream');
with (inputStream){
Type = adTypeText;
Charset = from;
Open();
LoadFromFile( inputFile );
}
var outputStream = WScript.CreateObject('adodb.stream')
with (outputStream){
Type = adTypeText;
Charset = to;
Open();
WriteText( inputStream.ReadText );
SaveToFile( outputFile, adSaveCreateOverWrite );
}
inputStream.Close()
outputStream.Close()