2012-12-18 6 views
2

J'ai une requête dans la commande "copie de fichier" tcl. J'ai essayé de stocker tous mes fichiers dans une liste et je l'ai utilisé dans ma commande. Mais tcl ne reconnaît pas ces fichiers.copier des fichiers dans tcl

par exemple:

Files are abc.log , foo.log , bar.log 

si ces fichiers sont ajoutés à une liste disent list_file et Si je remplace le list_file dans ma commande

lappend list_file abc.log foo.log bar.log 
    file mkdir ../../abc 
    file copy -- $list_file ../../abc 

Je reçois un message d'erreur "copie d'erreur, pas de fichier ou de répertoire ". Si je tente la même chose en spécifiant directement les noms de fichiers (au lieu de la liste) cela fonctionne. Veuillez me guider avec ceci

Répondre

2

Pour élaborer sur @ la réponse de mal-otto ...

{*} est uniquement disponible depuis Tcl 8.5; pour les versions antérieures, eval ou plusieurs invocations pourraient être utilisées.

Construire une commande à l'aide eval:

set cmd [list file copy --] 
lappend cmd abc.log foo.log bar.log ../../abc 
eval $cmd 

(Lire this pour savoir pourquoi l'utilisation de listes est un must lors de la création de commandes pour être eval uated.)

appel multiple (un doux euphémisme):

foreach fname $list_file { 
    file copy -- $fname ../../abc 
} 
+0

merci! comment copier un répertoire? il dit "ne peut pas écraser le fichier" –

1

La liste passée à file copy doit être étendue.

file copy -- {*}$list_file ../../abc 
Questions connexes