Besoin de conseil pour réaliser une opération particulière

French support forum

Moderators: white, nsp, Stefan2

Post Reply
Benoit
Junior Member
Junior Member
Posts: 4
Joined: 2005-01-26, 20:14 UTC
Location: Bruxelles

Besoin de conseil pour réaliser une opération particulière

Post by *Benoit »

Bonjour à tous,

Je souhaite réaliser un bouton qui effectue une opération particulière et je m'interroge sur la méthode à utiliser. Je m'explique.

Dans l'entreprise, nous utilisons une structure de répertoires particulière comme suit (en simplifié) :

Disque:\Publication\Environnement_A\Projet\auteur
Disque:\Préparation\Environnement_A\Projet\auteur
Disque:\Publication\Environnement_B\Projet\auteur
Disque:\Préparation\Environnement_B\Projet\auteur

Lorsque je me trouve dans un de ces répertoires), je souhaite avoir un bouton, ou un raccourci me permettant de changer le répertoire courant vers :
soit l'autre environnement, soit vers l'autre niveau de travail (Publication, Préparation).

Exemple :

Départ : Disque:\Publication\Environnement_A\Projet\auteur
Clic sur le bouton "Change Environnement"
: Disque:\Préparation\Environnement_B\Projet\auteur
Clic sur le bouton "Change Niveau"
: Disque:\Publication\Environnement_B\Projet\auteur
Clic sur le bouton "Change Environnement"
: Disque:\Publication\Environnement_A\Projet\auteur
etc....

Comment s'y prendre ?

J'ai déjà imaginé travailler à partir d'un fichier .bat qui serait appelé par un bouton... Mais pas moyen de changer le répertoire du panneau courant.
Ensuite, nous avons essayé avec la commande "cd %qqch/../../.." Mais cela ne convient pas car en dessous de 'auteur' on peut avoir d'autres répertoires.

Peut-être alors pourrions nous créer une commande (de style cm_******) qui appellerait un de nos scripts ? Mais comment faire ceci ?


Enfin bref : plus d'idée pour atteindre cet objectif. Auriez-vous une suggestion sur la manière de résoudre notre problème ?
User avatar
franck8244
Power Member
Power Member
Posts: 703
Joined: 2003-03-06, 17:37 UTC
Location: Geneva...

Post by *franck8244 »

Les premières choses qui me viennent à l'esprit :
- Utiliser les Répertoires Favoris (si les schémas sont simples et peu nombreux)

- Utiliser des fichiers d'onglets appelés avec APPENTAB OU OPENTAB

- Utiliser des variables d'environnements temporaires

Question : la position et la longueur des "différences" (nom des répertoires principaux, valeurs A et B) varient ou sont elles fixes ? Les répertoires sont tous sur le même disque ?
TC#88260 -
User avatar
franck8244
Power Member
Power Member
Posts: 703
Joined: 2003-03-06, 17:37 UTC
Location: Geneva...

Ce n'était pas si dur

Post by *franck8244 »

Vous trouverez içi tout ce dont vous avez besoin... :shock:

Cela fonctionne chez moi avec TC 6.5 8)
Il suffit de se trouver dans un répertoire de votre "type" et en cliquant sur un bouton on passe d'un environnement à l'autre ou d'un niveau a l'autre (qu'il y ait des fichiers sélectionnés ou non), il suffit de patienter 1 seconde (sur ma machine) et le tour est joué. Internet explorer doit être installé (nécessaire pour les parties en vbscript)

L'archive contient :
- TCSCript Editor (MacroTC.zip) : pour automatiser des actions de TC
- Environnement.zip : 2 fichiers pour votre changement d'environnement
- Niveau.zip : 2 fichiers pour votre changement de niveau

Cela fonctionne en 3 temps:
- Récupération du chemin en cours
- Analyse et modification de celui ci
- Déplacement vers la destination

:arrow: (1) & (3) se font avec TCSCript Editor qui appel (2) qui lui se fait en vbscript

Les fichiers *.vbs sont trés simples (c'est la première fois que j'en fait) : ouvrez les avec un éditeur de texte pour en vérifier le contenu (si vous voulez) : ils récupèrent le chemin passé en argument puis remplace les chaines de caractères...

:arrow: Pour créer les boutons :
Avant toute chose vérifier que TCScript Editor fonctionne bien avec votre TC :! :
Il est nécessaire de modifier légéremment les deux fichiers *.tcs, à la ligne 9 est d'y mettre l'emplacement "final" des fichiers *.vbs

Changement Environnement :
Commande : Chemin Vers Fichier\TCSCript.exe
Parametre: /run "Chemin Vers Fichier\Env.tcs"

idem pour changement de Niveau (fichier Niv.tcs)

Si vous avez des questions n'hésitez pas :roll: :wink:
TC#88260 -
Benoit
Junior Member
Junior Member
Posts: 4
Joined: 2005-01-26, 20:14 UTC
Location: Bruxelles

Post by *Benoit »

Super. Je ne pensais pas que ce serait si simple à réaliser. Toutefois, il me reste un petit souci puisque... cela ne fonctionne pas.

à la ligne 10 du fichier .tcs, je ne reçois pas de valeur. L'appel à Getclipbrd ne fonctionne pas. J'ai supposé que cela était dû aux restrictions imposées à IE (Security Policy de l'entreprise). J'ai donc remplacé le fichier .vbs par un script perl qui fait la même chose. Le résultat obtenu n'est guère plus concluant. Je n'obtient toujours aucun résultat de Getclipbrd.

Comment puis-je résoudre autrement ce petit souci ?

Benoit
User avatar
franck8244
Power Member
Power Member
Posts: 703
Joined: 2003-03-06, 17:37 UTC
Location: Geneva...

Post by *franck8244 »

Pour tester le ficier VBS (et les restrictions de votre entreprise)
placer directement le fichier VBS ds la barre de bouton , comme parametre : "%P" (avec les " " )

Pour "suivre" ajouter dans le fichier vbs:

ligne 7 : wscript.echo depart
ligne 14: wscript.echo sorti

Aprés avoir vu les 2 msgbox, essayez 1 coller (ctrl+V) : si rien ne se passe, vous ne pouvez pas utiliser le presse papier par IE

Si cela fonctionne dite le...
TC#88260 -
Benoit
Junior Member
Junior Member
Posts: 4
Joined: 2005-01-26, 20:14 UTC
Location: Bruxelles

Post by *Benoit »

Cela ne fonctionne pas avec le vbs...

Par contre, j'ai réussi à faire fonctionner le copier/coller avec mon script perl... Je dois encore un peu améliorer cela pour que ça fonctionne comme je le souhaite.

Je vous tiendrai informé des résultats.
User avatar
franck8244
Power Member
Power Member
Posts: 703
Joined: 2003-03-06, 17:37 UTC
Location: Geneva...

Post by *franck8244 »

Vous êtes sur la bonne voie alors... :wink:

De mon coté j'ai demandé à l'auteur de TCSCript Editor d'implémenter une fonction pour remplacer les caractères : cela évitera de passer par un script Perl et de tout faire "directement"...

Bonne journée
TC#88260 -
Benoit
Junior Member
Junior Member
Posts: 4
Joined: 2005-01-26, 20:14 UTC
Location: Bruxelles

C'est en ordre

Post by *Benoit »

voilà voilà, cela fonctionne. Ce n'est pas encore optimal et de plus, il est vrai qu'une fonction dans tcscript pour remplacer une chaîne de caractère pourrait certainement améliorer les performances.

exemple ci-dessous : goto publication

Fichier .tcs
#include VKeys.h
#define source ""
#define dest ""
#define complet ""
#define parametres ""
#define VK_V 86
sendcmd(cm_CopySrcPathToClip);
GetClipbrd(source);
delclipbrd;
strcat(parametres, "goto.pl ");
strcat(parametres, source);
strcat(parametres, " publication");
// note : utiliser wperl au lieu de perl.exe
Exec("wperl.exe", parametres, "c:\soft\totalcmd\plugins\goto\");
// pour laisser le temps à xperl de remplir le clipboard
sleep(500);
Getclipbrd(dest);
strcat(complet,dest);
sendcmd(cm_FocusCmdLine);
sendtext("cd ");
SendVKey(VK_CONTROL,1);
SendVKey(VK_V,2);
SendVKey(VK_CONTROL,0);
SendVKey(VK_RETURN,2);

Le fichier perl (fraction)

#!perl
use strict;
use Win32::Clipboard;
my $sourcePath=lc(shift()); # lecture du répertoire
my $toDest=lc(shift()); # destination

if ( $toDest =~ /publication/ ){ # je souhaite aller vers publication
$sourcePath=~s/\\préparation/\\$toDest/; # Adapter le chemin
$sourcePath=~s/\\relecture/\\$toDest\\pro\\runtime/;
}
elsif ..... # idem pour les autres destinations

my $CLIP = Win32::Clipboard();
$CLIP->Set($sourcePath);
Post Reply