Page 1 of 1

Utilisation d'une variable pour un argument de File.move

Posted: 19 Sep 2015, 17:49
by Tara42
Bonjour,

Ma question est assez simple :

Dans l'objet fichier, pour la fonction move, je souhaiterais pouvoir utiliser une variable pour les arguments "source" et "destination" :

File.move(source, destination);

J'ai essayé d'utiliser des variables texte contenant le chemin de la source et de la destination :

File.move($SOURCE, $DESTINATION); mais cela ne fonctionne pas !...

Avez-vous une astuce ou un contournement pour que les arguments soient variables ?

Merci par avance pour votre aide :wink:

Re: Utilisation d'une variable pour un argument de File.move

Posted: 19 Sep 2015, 18:35
by Sergent-Quentin
Salut,

Tu dois écrire comme ceci :

Code: Select all

var Source = "C:/Users/Quentinou/Desktop/Dossier/Source/Coucou.txt", Destination = "C:/Users/Quentinou/Desktop/Dossier/Destination";

var Fichier = new File();
File.move(Source, Destination);
Pas besoin de "$" devant ;)

Cordialement

Sergent-Quentin

Re: Utilisation d'une variable pour un argument de File.move

Posted: 20 Sep 2015, 00:38
by Tara42
Sergent-Quentin wrote:Salut,

Tu dois écrire comme ceci :

Code: Select all

var Source = "C:/Users/Quentinou/Desktop/Dossier/Source/Coucou.txt", Destination = "C:/Users/Quentinou/Desktop/Dossier/Destination";

var Fichier = new File();
File.move(Source, Destination);
Pas besoin de "$" devant ;)

Cordialement

Sergent-Quentin
Merci pour ta réponse. Le script fonctionne mais il ne permet pas de faire ce que je souhaite car le chemin de la source et celui de la destination doivent pouvoir être récupérés à partir d'une variable et non pas écrits en dur à l'intérieur de l'action code.

Autrement dit, comment faire pour que "C:/Users/Quentinou/Desktop/Dossier/Source/Coucou.txt" vienne d'une variable et "C:/Users/Quentinou/Desktop/Dossier/Destination" d'une autre ?

Car bien évidemment si j'écris :

Code: Select all

var Source = $Variable1, Destination = $Variable2;

var Fichier = new File();
File.move(Source, Destination);
On retrouve le même problème, ça ne marche pas !! :twisted:

Pour info, j'ai essayé avec l'action "Copier fichier" toute prête (c'est un File.copy mais ce n'est pas grave puisque c'était juste pour tester !). Eh bien, avec des variables au niveau des champs "Fichier source" et "Destination", l'action plante carrément Actiona 3.9 !

Serait-ce impossible ou alors je ne comprends rien ?! :cry:

Merci à nouveau pour vos réponses :wink:

Re: Utilisation d'une variable pour un argument de File.move

Posted: 20 Sep 2015, 12:08
by Sergent-Quentin
Salut,

J'ai rédiger un petit bout de code :

1/ Il va te demander de choisir le fichier à déplacer (Source).
2 / Il va te demander de choisir le dossier de destination ( une fois le dossier de destination choisis, tu dois cliquer juste une fois dessus et cliquer sur "Sélectionner un dossier" )

Code: Select all

// Sélectionne ton fichier texte
var Source = "";
var fileDialog = new FileDialog({
title: "Sélectionne le chemin de la source", 
fileMode: FileDialog.ExistingFile,
acceptMode: FileDialog.Open
});

if (fileDialog.showModal()) {
Source = fileDialog.selectedFile();
Console.print("Source : ", Source);
}
 // Sélectionne ton dossier de destination
var Destination = "";
var fileDialog = new FileDialog({
title: "Sélectionne le chemin de la destination", 
fileMode: FileDialog.Directory,
acceptMode: FileDialog.Open
});

if (fileDialog.showModal()) {
Destination = fileDialog.selectedFile();
Console.print("Destination : ", Destination);
}

// Déplace le fichier
var Fichier = new File();
File.move(Source, Destination);
Cordialement

Sergent-Quentin

Re: Utilisation d'une variable pour un argument de File.move

Posted: 20 Sep 2015, 19:46
by Tara42
Sergent-Quentin wrote:Salut,

J'ai rédiger un petit bout de code :

1/ Il va te demander de choisir le fichier à déplacer (Source).
2 / Il va te demander de choisir le dossier de destination ( une fois le dossier de destination choisis, tu dois cliquer juste une fois dessus et cliquer sur "Sélectionner un dossier" )

Code: Select all

// Sélectionne ton fichier texte
var Source = "";
var fileDialog = new FileDialog({
title: "Sélectionne le chemin de la source", 
fileMode: FileDialog.ExistingFile,
acceptMode: FileDialog.Open
});

if (fileDialog.showModal()) {
Source = fileDialog.selectedFile();
Console.print("Source : ", Source);
}
 // Sélectionne ton dossier de destination
var Destination = "";
var fileDialog = new FileDialog({
title: "Sélectionne le chemin de la destination", 
fileMode: FileDialog.Directory,
acceptMode: FileDialog.Open
});

if (fileDialog.showModal()) {
Destination = fileDialog.selectedFile();
Console.print("Destination : ", Destination);
}

// Déplace le fichier
var Fichier = new File();
File.move(Source, Destination);
Cordialement

Sergent-Quentin
Merci pour ce bout de code mais le problème dans ce cas c'est que le choix du fichier à déplacer et du répertoire de destination doit être fait "manuellement" par l'utilisateur.

En fait dans mon script, ces informations sont lues dans des fichiers texte de paramétrage extérieurs et insérées dans des variables. La question qui se pose est donc de trouver une méthode pour récupérer le contenu de ces variables dans une action code avec "File.move". :cry:

Re: Utilisation d'une variable pour un argument de File.move

Posted: 20 Sep 2015, 21:40
by Sergent-Quentin
Salut,

Si j'ai bien compris l'adresse de ton fichier et de ta destination sont dans un fichier texte, ils doivent êtres lus et contenu chacune dans une variable ?

je t'ai fais un petit code, tu as juste à remplacer l'adresse 'C:/Users/Quentinou/Desktop/Paramètres.txt' par l'adresse de ton fichier contenant les paramètres.

:arrow: Le code lit la première et la deuxième ligne de ton ficher texte et stock leur valeurs dans leurs variables respectifs.

Code: Select all

// Lecture du fichier texte//

// Première ligne
var file = new File();
file.open('C:/Users/Quentinou/Desktop/Paramètres.txt', File.ReadOnly);
var Source = file.readText().split("\n")[0];
file.close();
// Deuxième ligne
file.open('C:/Users/Quentinou/Desktop/Paramètres.txt', File.ReadOnly);
var Destination = file.readText().split("\n")[1];
file.close();

// Création d'une boite de dialogue
var Boite = new MessageBox({
title: "Informations",
text: "Source : "+Source+"\nDestination : "+Destination,
icon: MessageBox.Information,
buttons: MessageBox.Ok
});
Boite.showModal();
Cordialement

Sergent-Quentin

Re: Utilisation d'une variable pour un argument de File.move

Posted: 20 Sep 2015, 23:26
by Tara42
Sergent-Quentin wrote:Salut,

Si j'ai bien compris l'adresse de ton fichier et de ta destination sont dans un fichier texte, ils doivent êtres lus et contenu chacune dans une variable ?

je t'ai fais un petit code, tu as juste à remplacer l'adresse 'C:/Users/Quentinou/Desktop/Paramètres.txt' par l'adresse de ton fichier contenant les paramètres.

:arrow: Le code lit la première et la deuxième ligne de ton ficher texte et stock leur valeurs dans leurs variables respectifs.

Code: Select all

// Lecture du fichier texte//

// Première ligne
var file = new File();
file.open('C:/Users/Quentinou/Desktop/Paramètres.txt', File.ReadOnly);
var Source = file.readText().split("\n")[0];
file.close();
// Deuxième ligne
file.open('C:/Users/Quentinou/Desktop/Paramètres.txt', File.ReadOnly);
var Destination = file.readText().split("\n")[1];
file.close();

// Création d'une boite de dialogue
var Boite = new MessageBox({
title: "Informations",
text: "Source : "+Source+"\nDestination : "+Destination,
icon: MessageBox.Information,
buttons: MessageBox.Ok
});
Boite.showModal();
Cordialement

Sergent-Quentin
Bonsoir,

On avance mais File.move ne transfère pas les fichiers !

J'espère qu'il s'agit juste d'une bêtise de ma part, sauf que je ne la trouve pas...

Voici mon code (ton code :wink: ) :

Code: Select all

// Lecture du fichier texte//

    // Première ligne
    var file = new File();
    file.open('C:/Essai1/Param.txt', File.ReadOnly);
    var Source = file.readText().split("\n")[0];
    file.close();
    // Deuxième ligne
    file.open('C:/Essai1/Param.txt', File.ReadOnly);
    var Destination = file.readText().split("\n")[1];
    file.close();

// Déplace le fichier
var Fichier = new File();
File.move(Source, Destination);
Et voici le contenu du fichier texte de paramétrage Param.txt (enregistré au format .txt avec Notepad++) :

Code: Select all

C:/Essai2/*.xml
C:/Essai3/
Au départ dans le répertoire "Essai2" j'ai 3 fichiers .xml et le répertoire "Essai3" est vide.

Le code s'exécute normalement (sans bug) mais après l'exécution dans "Essai2" j'ai toujours mes 3 fichiers et "Essai3" reste désespérément vide...

Peux-tu tester de ton côté et m'aider à trouver ce qui ne va pas ?

Avec mes remerciements. :D

Re: Utilisation d'une variable pour un argument de File.move

Posted: 21 Sep 2015, 00:52
by Sergent-Quentin
Salut,

J'ai fait une modification, de ton coté, dans ton fichier paramètre :

Au lieu d'écrire comme ça :

C:/Users/Quentinou/Desktop/Dossier/Dossier 1/Transfert.txt
C:/Users/Quentinou/Desktop/Dossier/Dossier 2

écris comme ça (Tu les sépares avec un "|") :

C:/Users/Quentinou/Desktop/Dossier/Dossier 1/Transfert.txt|C:/Users/Quentinou/Desktop/Dossier/Dossier 2

Et exécute ce code (il fonctionne chez moi ;) ) :

Code: Select all

// Lit le fichier source
var file = new File();
file.open('C:/Users/Quentinou/Desktop/Dossier/Doc.txt', File.ReadOnly);
var Source = file.readText().split("|")[0];
file.close();
Console.print(Source);

// Lit l'adresse de destination
file.open('C:/Users/Quentinou/Desktop/Dossier/Doc.txt', File.ReadOnly);
var Destination = file.readText().split("|")[1];
file.close();
Console.print(Destination);

File.move(Source, Destination);
Cordialement

Sergent-Quentin

Re: Utilisation d'une variable pour un argument de File.move

Posted: 21 Sep 2015, 21:34
by Tara42
Sergent-Quentin wrote:Salut,

J'ai fait une modification, de ton coté, dans ton fichier paramètre :

Au lieu d'écrire comme ça :

C:/Users/Quentinou/Desktop/Dossier/Dossier 1/Transfert.txt
C:/Users/Quentinou/Desktop/Dossier/Dossier 2

écris comme ça (Tu les sépares avec un "|") :

C:/Users/Quentinou/Desktop/Dossier/Dossier 1/Transfert.txt|C:/Users/Quentinou/Desktop/Dossier/Dossier 2

Et exécute ce code (il fonctionne chez moi ;) ) :

Code: Select all

// Lit le fichier source
var file = new File();
file.open('C:/Users/Quentinou/Desktop/Dossier/Doc.txt', File.ReadOnly);
var Source = file.readText().split("|")[0];
file.close();
Console.print(Source);

// Lit l'adresse de destination
file.open('C:/Users/Quentinou/Desktop/Dossier/Doc.txt', File.ReadOnly);
var Destination = file.readText().split("|")[1];
file.close();
Console.print(Destination);

File.move(Source, Destination);
Cordialement

Sergent-Quentin
Salut,

Chez moi aussi ça fonctionne ! :D

La question était simple, la réponse aussi... mais il fallait quand même la trouver !! :D

Je pense que ta réponse sera très utile à de nombreux utilisateurs d'Actiona.

Encore merci :lol:

Tara42