cmd - 打开文件并保存 - 脚本

时间:2014-09-08 09:55:10

标签: batch-file encoding utf-8 cmd

我需要打开一个.csv文件,并立即使用.bat以相同的名称保存它(覆盖它)。

这可能听起来很愚蠢,但这是我发现更改.csv文件编码的最简单方法(从ANSI到UTF-8)。

如果我输入notepad file-name.csv,它会打开.csv文件,但是如何保存呢?

2 个答案:

答案 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()