Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Traitement sur les fichiers sélectionnés

3 réponses
Avatar
Alain
Je travaille dans l'explorateur de fichiers de Windows.
Je dois écrire un petit programme qui réparti les fichiers Word présent et
sélectionnés dans le directory courant dans différents directory en fonction
du nom de ces fichiers.
J'ai deux questions à vous poser:
1- VBScript est-il adapté pour ce type de tâche (je pense que oui)?
2- comment détecter les fichiers sélectionnés par l'utilisateur dans le
directory courant?
Je suis débutant dans le monde Windows.
Merci d'avance pour votre réponse, Alain.

3 réponses

Avatar
Méta-MCI
Bonjour !

AMHA, on peut le faire en VBS... comme on peut le faire en batch (ou en
PowerShell, si tu habites dans le nord, ou en Belgique).
Donne-nous quelques précisions sur la forme de noms de fichiers, qu'on
puisses faire des suggestions plus pragmatiques.

@+

MCI
Avatar
Jacques Barathon [MS]
"Alain" wrote in message
news:
Je travaille dans l'explorateur de fichiers de Windows.
Je dois écrire un petit programme qui réparti les fichiers Word présent et
sélectionnés dans le directory courant dans différents directory en
fonction
du nom de ces fichiers.
J'ai deux questions à vous poser:
1- VBScript est-il adapté pour ce type de tâche (je pense que oui)?


D'après ce que tu décris, oui. Un simple batch suffirait même si j'en crois
la description de ton besoin (mais bon, ça dépend de la complexité de
l'analyse des noms de fichiers).

2- comment détecter les fichiers sélectionnés par l'utilisateur dans le
directory courant?


L'approche générale consistera à ajouter une option dans le menu contextuel
de l'Explorateur pour pouvoir exécuter ton script. Le choix réside dans le
type d'objet auquel ajouter cette option. Plusieurs méthodes sont possibles,
selon le scénario d'utilisation préféré:

Scénario 1 -
- Je sélectionne plusieurs fichiers d'un même type (documents Word dans ton
cas)
- Je fais un clic-droit sur ces fichiers, je choisis l'option "Dispatch"

Pour ce scénario, la commande "Dispatch" doit être ajoutée au menu
contextuel de l'objet Word.Document.8. Depuis une invite de commande on
pourra taper:

reg add HKCRWord.Document.8shellDispatchcommand /ve /d
"c:scriptsdispatch.vbs "%1""

Cette commande va ajouter une clé Dispatch dans la clé Shell de l'objet
concerné (présent dans HKEY_CLASSES_ROOT). Cette clé Dispatch apparaîtra
sous ce même nom dans le menu contextuel de l'objet.
Si on sélectionne "Dispatch" sur un document Word, la commande
c:scriptsdispatch.vbs "%1" sera exécutée. "%1" correspondra au nom du
fichier sélectionné ('' est utilisé comme caractère d'échappement pour
ajouter des guillemets dans le texte). Les guillemets sont importants pour
couvrir les cas où le nom contient des espaces. Si le chemin d'accès à
dispatch.vbs contient aussi des espaces, il faudra également l'entourer de
guillemets, comme par exemple:

reg add HKCRWord.Document.8shellDispatchcommand /ve /d ""c:program
filesmes scriptsdispatch.vbs" "%1""

Si plusieurs fichiers sont sélectionnés, la commande sera appelée plusieurs
fois, en recevant les noms de fichiers un à un. Il faut donc construire ton
script sur le principe qu'il traite un seul fichier.

Scénario 2 -
- Je sélectionne le répertoire racine qui contient les documents en question
(y compris dans des sous-répertoires)
- Je fais un clic-droit sur ce dossier, je choisis l'option "Dispatch"

Le principe de base est identique (modification de la base de registre pour
ajouter la commande "Dispatch" au menu contextuel). Ce qui va changer, c'est
d'une part le nom de l'objet qu'on modifie, et d'autre part le type de
traitement réalisé dans le script dispatch.vbs:

reg add HKCRDirectoryshellDispatchcommand /ve /d
"c:localbindispatch.vbs "%1""

Là, "%1" correspond au nom du répertoire sélectionné. Le script dispatch.vbs
devra donc consister à parcourir tous les fichiers contenus dans ce
répertoire et ses sous-répertoires pour y appliquer les traitements requis.

A toi de voir ce qui te convient le mieux.

Jacques

Avatar
Alain

"Alain" wrote in message
news:
Je travaille dans l'explorateur de fichiers de Windows.
Je dois écrire un petit programme qui réparti les fichiers Word présent et
sélectionnés dans le directory courant dans différents directory en
fonction
du nom de ces fichiers.
J'ai deux questions à vous poser:
1- VBScript est-il adapté pour ce type de tâche (je pense que oui)?


D'après ce que tu décris, oui. Un simple batch suffirait même si j'en crois
la description de ton besoin (mais bon, ça dépend de la complexité de
l'analyse des noms de fichiers).

2- comment détecter les fichiers sélectionnés par l'utilisateur dans le
directory courant?


L'approche générale consistera à ajouter une option dans le menu contextuel
de l'Explorateur pour pouvoir exécuter ton script. Le choix réside dans le
type d'objet auquel ajouter cette option. Plusieurs méthodes sont possibles,
selon le scénario d'utilisation préféré:

Scénario 1 -
- Je sélectionne plusieurs fichiers d'un même type (documents Word dans ton
cas)
- Je fais un clic-droit sur ces fichiers, je choisis l'option "Dispatch"

Pour ce scénario, la commande "Dispatch" doit être ajoutée au menu
contextuel de l'objet Word.Document.8. Depuis une invite de commande on
pourra taper:

reg add HKCRWord.Document.8shellDispatchcommand /ve /d
"c:scriptsdispatch.vbs "%1""

Cette commande va ajouter une clé Dispatch dans la clé Shell de l'objet
concerné (présent dans HKEY_CLASSES_ROOT). Cette clé Dispatch apparaîtra
sous ce même nom dans le menu contextuel de l'objet.
Si on sélectionne "Dispatch" sur un document Word, la commande
c:scriptsdispatch.vbs "%1" sera exécutée. "%1" correspondra au nom du
fichier sélectionné ('' est utilisé comme caractère d'échappement pour
ajouter des guillemets dans le texte). Les guillemets sont importants pour
couvrir les cas où le nom contient des espaces. Si le chemin d'accès à
dispatch.vbs contient aussi des espaces, il faudra également l'entourer de
guillemets, comme par exemple:

reg add HKCRWord.Document.8shellDispatchcommand /ve /d ""c:program
filesmes scriptsdispatch.vbs" "%1""

Si plusieurs fichiers sont sélectionnés, la commande sera appelée plusieurs
fois, en recevant les noms de fichiers un à un. Il faut donc construire ton
script sur le principe qu'il traite un seul fichier.

Scénario 2 -
- Je sélectionne le répertoire racine qui contient les documents en question
(y compris dans des sous-répertoires)
- Je fais un clic-droit sur ce dossier, je choisis l'option "Dispatch"

Le principe de base est identique (modification de la base de registre pour
ajouter la commande "Dispatch" au menu contextuel). Ce qui va changer, c'est
d'une part le nom de l'objet qu'on modifie, et d'autre part le type de
traitement réalisé dans le script dispatch.vbs:

reg add HKCRDirectoryshellDispatchcommand /ve /d
"c:localbindispatch.vbs "%1""

Là, "%1" correspond au nom du répertoire sélectionné. Le script dispatch.vbs
devra donc consister à parcourir tous les fichiers contenus dans ce
répertoire et ses sous-répertoires pour y appliquer les traitements requis.

A toi de voir ce qui te convient le mieux.

Jacques







Merci beaucoup pour votre réponse.
Alain.