2010-07-19 8 views
0

J'essaie de convertir un fichier plat en format lisible par Excel. Nous recevons le fichier texte qui utilise le tilde (~) comme un délimiteur de champ, et je veux le convertir en un qui utilise le caractère Tab. Cela m'intéresse de l'exécuter à partir de la ligne de commande, et j'ai besoin d'être flexible avec les noms de fichiers, donc je veux utiliser des paramètres. Le VBScript je pour elle est la suivante:Problème avec les chaînes passées en tant que paramètres à partir de la ligne de commande

Set Args = WScript.Arguments 
Set inf = Args(0) 
Set outf = Args(1) 

Const ForReading = 1 
Const ForWriting = 2 

Set objFSO = CreateObject("Scripting.FileSystemObject") 

Set objFile = objFSO.OpenTextFile(infile.Value , ForReading) 
strContents = objFile.ReadAll 
objFile.Close 

strContents = Replace(strContents, "~", vbTab) 

Set objFile = objFSO.OpenTextFile(outfile.Value , ForWriting) 
objFile.Write strContents 
objFile.Close 

Pour une raison quelconque, je reçois l'erreur Objet requis: '[string: "infile.txt"]'. L'utilisation de infile, infile.Value ou infile.ToString comme argument dans objFSO.OpenTextFile(infile, ForReading) ne semble pas fonctionner. VBScript n'étant pas mon point fort, est-ce que quelqu'un a de l'aide?

Répondre

2
  1. paramètres de ligne de commande sont des chaînes et non des objets, donc il n'y a pas besoin d'utiliser le mot-clé Set pour des missions:

    inf = Args(0) 
    outf = Args(1) 
    
  2. Notez également que le code ci-dessus vous donne déjà les valeurs des paramètres, il n'est donc pas nécessaire d'utiliser .Value, .ToString etc (en fait, cela entraînera une erreur d'exécution).

  3. Il es fautes de frappe dans votre script — les inf et outf les variables sont ensuite appelées infile et outfile.

+0

Merci pour le pointeur. J'avais à l'origine la partie conversion dans un Sub, mais je l'ai sorti quand j'ai commencé à rencontrer des erreurs. – taserian

Questions connexes