2014-09-08 2 views
1

Мне нужно открыть .csv-файл и мгновенно сохранить его с тем же именем (перезаписать его) с помощью .bat.cmd - открыть файл и сохранить его - скрипт

Это может показаться глупым, но это самый простой способ, который я нашел, чтобы изменить кодировку файла .csv (от ANSI до UTF-8).

Если я набираю блокнот file-name.csv, он открывает CSV-файл, но как его сохранить сейчас?

+0

Зачем вам нужно его открывать и сохранять? – 2014-09-08 10:00:34

+0

@Jidder. CSV-файл загружается с Google Диска и имеет кодировку ANSI. Если я открою этот файл в «Блокноте» и сохраню его, он изменит кодировку на UTF-8. Вот почему мне нужен сценарий для автоматического выполнения этого процесса. – maeq

+0

Вы говорите '.bash' (это консольная среда Linux), но в то же время вы упоминаете« блокнот », который является инструментом Windows. Какую работу вы используете? В Linux вы можете использовать 'iconv' для преобразования кодировки текстового файла. –

ответ

1

Вы можете использовать порт Windows для инструмента Linux iconv, который может конвертировать текстовые файлы из одной кодировки в другую.

gnuwin32 project имеет порты всех основных GNU утилит, в том числе iconv, которые могут быть загружены в виде единого пакета здесь:

1

Для чистого раствора сценария, это гибрид пакетное/javascript решение (адаптировано из предыдущего ответа vbs). При необходимости адаптируйте и сохраните файл .cmd.

@if (@[email protected]) @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() 
Смежные вопросы