IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

Renommer au clavier..


Sujet :

VBScript

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 5
    Par défaut Renommer au clavier..
    Bonjour amis développeurs,


    Je recherche depuis quelques temps une façon de renommer mes fichiers d'un façon spécifique : il faut ajouter la date au format AAAAMMJJ devant le nom du fichier.


    Exemple:
    Avant: "texte.doc" Apres: "20100420 - texte.doc"

    J'ai cherché comment faire ça avec du code, et je me suis lancé sur le VBS.

    Pour l'instant, je me suis fait un code qui ajoute un "_HQ" en fin de mes fichiers JPG:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Set objArgs = WScript.Arguments 
    Dim VarMod
    If objArgs.Count  > 0 Then
    	Set objFSO = CreateObject("Scripting.FileSystemObject")
    	VarMod = Replace(objArgs(0), ".JPG", "_HQ.JPG")
    	VarMod = Replace(VarMod , ".jpg", "_HQ.jpg")
    	objFSO.MoveFile objArgs(0) , VarMod
    End if
    Par contre, ce code fonctionne avec un glisser-déposer..
    Ce qui m'oblige de le copier dans tous les répertoires où je veux l'utiliser..


    Ce que je cherche : J'aimerais exécuter cette action de "renommage" à partir d'un raccourci clavier !

    Question 1: Le VBS est-il le bon code pour cela ? Si non, lequel serait le bon ?

    Question 2: Comment puis-je lancer ce script à partir de mon clavier ?

    Question 3: Comment faire comprendre au script VBS que je veux appliquer mon renommage sur le fichier sélectionné ? (en gros, est-ce que le "Set objArgs = WScript.Arguments " suffira ?)


    Voilà tout !


    Je vous remercie d'avance pour le temps que vous pourriez me consacrer.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    948
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 948
    Par défaut
    Pour les raccourcis claviers tu peux regarder du coté des logiciels tels que Keyboard tweaker ou launchy, qui te permettront d'associer des raccourcis claviers a des commandes.

  3. #3
    Modérateur
    Avatar de Overcrash
    Homme Profil pro
    Architecte Logiciel et responsable CRM (Salesforce)
    Inscrit en
    Mai 2008
    Messages
    1 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Architecte Logiciel et responsable CRM (Salesforce)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 254
    Par défaut
    Coucou

    Ou du coté hardware tel un clavier G15 mais déjà plus couteux je pense
    ---
    Overcrash

    Je ne lis pas les codes qui ne sont pas indentés.
    Merci de les messages utiles en cliquant en bas à droite du message

    Bloqué par le firewall pour accéder au chat ? Essayez avec l'adresse en direct : http://87.98.168.209/

  4. #4
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 5
    Par défaut
    Je vous remercie pour vos "réponses", mais elles ne répondent pas à mes questions..

    @Flamby38 : En général tu peux associer des .exe, mais jamais des scripts VBS..

    @Overcrash3181 : Je vais pas acheter un nouveau clavier pour ça, et ce n'est pas mon besoin.. A ce compte là, j'aurais aussi pu envisager d'acheter un chinois pour renommer mes fichiers à ma place..

    Quelqu'un d'autre aurait une idée ?

  5. #5
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par bmerklen Voir le message
    ....

    Ce que je cherche : J'aimerais exécuter cette action de "renommage" à partir d'un raccourci clavier !
    ...
    Je comprends pas, il s'exécute ou ton code ..? dans une fenêtre "shell" ... tu la vois comment ton histoire de raccourci clavier .. tu actionne les touches ALT+C par exemple ?? et ...



    Citation Envoyé par bmerklen Voir le message
    @Flamby38 : En général tu peux associer des .exe, mais jamais des scripts VBS..
    c'est pas "tu peux associer" c'est "on associe" rien ne t'empêche de faire la même chose pour un .vbs ... mais la il n'est plus question de raccourci clavier ...

  6. #6
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 5
    Par défaut
    Bonjour,

    Merci pour votre réponse.

    Oui, mon code s'exécute, mais uniquement si je fais un "glisser-déposer" de mon fichier sur le fichier VBS.

    Ce que je souhaiterais c'est que le VBS s'exécute après un raccourci clavier (du genre CTRL+ALT+R) sur le fichier sélectionné.

    Donc mon souci, c'est le raccourci clavier:
    - soit je trouve un moyen de lancer le VBS en tache de fond, et qu'il réagisse (renomme) quand j'utilise un raccourci clavier spécifique.
    C'est de la modification VBS pure dans ce cas là.

    - soit j'utilise un programme qui lance mon VBS suite à un raccourci clavier. Dans ce cas, il faut que je trouve un programme qui sache exécuter un VBS. (La plupart des programmes proposés n'exécute que des programmes .EXE !)
    Il faut aussi que je modifie mon VBS pour qu'il "comprenne" que je veux renommer le fichier sélectionné. (pour l'instant, le VBS le comprend très bien puisque j'utilise le "glisser-déposer")


    Est-ce plus explicite ?

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    948
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 948
    Par défaut
    @Flamby38 : En général tu peux associer des .exe, mais jamais des scripts VBS..
    Un script n'est pas un executable.Et pourtant il s'execute! magique?
    c'est tout simplement que quand tu double clique dessus windows va chercher l'executable qui sait lire les scripts, en l'occurence pour vbs tu peux utiliser la commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wscript C:\MonScript.vbs
    Ceci étant dit, je ne vois pas de manière simple de récupérer le fichier actuellement sélectionné dans l'explorateur windows, ce n'est que mon avis mais je pense que ce genre de choses ca ne releve pas du domaine du script, mais plutot du domaine d'une application. Un script c'est fait pour automatiser des taches d'administration, pas pour faire des interfaces user friendly.

  8. #8
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Pour récupérer le fichier sélectionné il faut modifier la base de registre ..

    tu crée la clef :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    KEY_CLASSES_ROOT\*\shell\MonScript\Command
    comme valeur par défaut tu met :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cscript D:\vbs\test.vbs  %1
    et ton fichier test.vbs ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    msgbox wscript.Arguments(0)
    un clic du bouton droit sur ton fichier dans l'explorateur Windows laisse apparaitre la nouvelle commande "MonScript"

  9. #9
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    948
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 948
    Par défaut
    Eh bien j'en apprend tous les jours

  10. #10
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 5
    Par défaut
    Excellent bbil, Merci !!

    J'ai donc crée mon entrée dans la base de registre.
    (En plus, il sera facile de l'adapter si je ne veux l'utiliser que sur les fichiers JPG !)
    Ce problème de "lancement rapide" est réglé ! Merci à tous !



    Il y avait un petit problème dans le cas du "bureau". En effet, si j'ai un fichier sur le bureau, wscript.Arguments(0) me retourne "D:\Documents"
    et pas "D:\Documents and Settings\user\Desktop\file.JPG"
    Les espaces posaient problèmes.

    Il donc fallut que je concatène toutes les entrées de wscript.Arguments(), comme cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Set objArgs = WScript.Arguments
    Dim VarMod, chemin
     
    If objArgs.Count  > 0 Then
        For i = 0 To objArgs.Count-1
    	chemin = chemin & " " & objArgs(i)
        Next
        chemin = LTrim(chemin)
     
        Set objFSO = CreateObject("Scripting.FileSystemObject")
        VarMod = Replace(chemin, ".JPG", "_HQ.JPG")
        VarMod = Replace(VarMod , ".jpg", "_HQ.jpg")
        objFSO.MoveFile chemin , VarMod
    End if
    J'aurais bien utilisé la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chemin = Join(objArgs," ")
    pour éviter la boucle et le LTrim, mais je n'arrive pas à la faire fonctionner..
    Quelqu'un sait pourquoi ?

  11. #11
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 5
    Par défaut
    Petite modification de mon code pour arriver à mon but initial:
    Renommer un fichier de la sorte:
    Avant: "texte.doc" Apres: "20100420 - texte.doc"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Set objArgs = WScript.Arguments
    Dim VarMod, chemin
     
    If objArgs.Count  > 0 Then
        For i = 0 To objArgs.Count-1
    	chemin = chemin & " " & objArgs(i)
        Next
        chemin = LTrim(chemin)
     
        Mois = Month(Now)
        Jour = Day(Now)
        If Day(Now) < 10 then Jour = "0" & Jour
        If Month(Now) < 10 then Mois = "0" & Mois
     
        Set objetFSO = CreateObject("Scripting.FileSystemObject")
        Set fichier = objetFSO.GetFile(chemin)
        Set dossier = objetFSO.GetFolder(fichier.ParentFolder)
     
        If not dossier.IsRootFolder Then dossier = dossier & "\"
        VarMod = dossier & Year(Now) & Mois & Jour & " - " & fichier.Name
     
        objetFSO.MoveFile chemin , VarMod
    End if

    Il me reste le "problème" du Join qui ferait gagner quelques lignes de codes, et qui serait plus propre. Mais sinon, c'est fonctionnel !

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/01/2014, 11h03
  2. [Turbo Pascal] Entrée au clavier sous forme ******
    Par Upal dans le forum Turbo Pascal
    Réponses: 12
    Dernier message: 15/02/2003, 14h42
  3. Renommer un repertoire
    Par Sitas dans le forum Langage
    Réponses: 5
    Dernier message: 14/08/2002, 11h56
  4. Cherche Nom des touches du clavier
    Par juan64 dans le forum C++Builder
    Réponses: 8
    Dernier message: 23/07/2002, 19h11
  5. Vider le buffer du clavier
    Par flavien tetart dans le forum x86 16-bits
    Réponses: 2
    Dernier message: 12/07/2002, 08h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo