Besoin de conseil pour réaliser une opération particulière
Moderators: Stefan2, white, nsp
Besoin de conseil pour réaliser une opération particulière
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 ?
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 ?
- franck8244
- Power Member
- Posts: 704
- Joined: 2003-03-06, 17:37 UTC
- Location: Geneva...
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 ?
- 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 -
- franck8244
- Power Member
- Posts: 704
- Joined: 2003-03-06, 17:37 UTC
- Location: Geneva...
Ce n'était pas si dur
Vous trouverez içi tout ce dont vous avez besoin... 
Cela fonctionne chez moi avec TC 6.5
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
(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...
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


Cela fonctionne chez moi avec TC 6.5

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

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...

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


TC#88260 -
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
à 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
- franck8244
- Power Member
- Posts: 704
- Joined: 2003-03-06, 17:37 UTC
- Location: Geneva...
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...
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 -
- franck8244
- Power Member
- Posts: 704
- Joined: 2003-03-06, 17:37 UTC
- Location: Geneva...
C'est en ordre
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);
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);