2014-09-08 9 views
1

Je dois ouvrir un fichier .csv et le sauvegarder instantanément avec le même nom (le remplacer) en utilisant un fichier .bat.cmd - Ouvrir le fichier et enregistrez-le - script

Cela peut sembler stupide, mais c'est la façon la plus simple que j'ai trouvé de changer cette codification de fichier .csv (de ANSI à UTF-8).

Si je tape notepad nom-fichier.csv, il ouvre le fichier .csv, mais comment l'enregistrer maintenant?

+0

Pourquoi avez-vous besoin d'ouvrir et de l'enregistrer? –

+0

@Jidder Le fichier .csv est téléchargé à partir de Google Drive et Il a la codification ANSI. Si j'ouvre ce fichier avec le Bloc-notes et le sauvegarde, la codification passe à UTF-8. C'est pourquoi j'ai besoin d'un script pour faire ce processus automatiquement. – maeq

+0

Vous dites '.bash' (qui est un environnement de console Linux) mais en même temps vous mentionnez" notepad "qui est un outil Windows. Quel fonctionnement utilisez-vous? Sous Linux, vous pouvez utiliser 'iconv' pour convertir l'encodage d'un fichier texte. –

Répondre

1

Pour une solution pure de script, c'est un hybride solution batch/javascript (adaptée d'une réponse vbs précédente). Adapter au besoin et enregistrer sous le fichier .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() 
Questions connexes