103 votes

Comment la commande RENAME de Windows interprète-t-elle les caractères génériques ?

Comment la commande RENAME (REN) de Windows interprète-t-elle les caractères génériques ?

La fonction HELP intégrée n'est d'aucune aide - elle ne prend pas du tout en compte les caractères génériques.

El Aide en ligne Microsoft technet XP n'est pas beaucoup mieux. Voici tout ce qu'il a à dire concernant les jokers :

"Vous pouvez utiliser des caractères de substitution ( * y ? ) dans l'un ou l'autre des paramètres du nom de fichier. Si vous utilisez des caractères génériques dans le nom de fichier2, les caractères représentés par les caractères génériques seront identiques aux caractères correspondants dans le nom de fichier1."

Pas très utile - cette déclaration peut être interprétée de plusieurs façons.

J'ai réussi à utiliser des caractères génériques dans le fichier nom de fichier2 à certaines occasions, mais il a toujours fallu procéder par essais et erreurs. Je n'ai pas été en mesure d'anticiper ce qui fonctionne et ce qui ne fonctionne pas. Fréquemment, j'ai dû recourir à l'écriture d'un petit lot script avec un script qui analyse chaque nom afin que je puisse construire chaque nouveau nom selon les besoins. Pas très pratique.

Si je connaissais les règles de traitement des caractères génériques, je pense que je pourrais utiliser la commande RENAME plus efficacement sans avoir à recourir aussi souvent au batch. Bien sûr, la connaissance des règles serait également bénéfique au développement du batch.

(Oui - il s'agit d'un cas où je poste une question et une réponse jumelées. J'en ai eu assez de ne pas connaître les règles et j'ai décidé de faire ma propre expérience. Je me suis dit que beaucoup d'autres personnes pourraient être intéressées par ce que j'ai découvert).

-1voto

user1470686 Points 1

J'ai rencontré un cas où il s'agit soit d'un caractère spécial négligé ou non documenté, soit d'un simple bug. Il s'agit du caractère de soulignement '_' lorsqu'il est utilisé avec des caractères génériques. Par exemple :

ren A_B.TXT AB.TXT (ceci fonctionne comme prévu)

ren A_*.TXT A*.TXT (ne fait rien ? ?)

ren A_ ?.TXT A ?.TXT (résultat A_.TXT)

compte tenu des fichiers existants :

A_B_1.TXT

A_B_2.TXT

A_B_3.TXT

ren A_B_*.TXT A_*.TXT (ne fait rien)

ren A_B_ ?.TXT A_ ?.TXT (donne une instance de A_B.TXT et deux erreurs de nom en double)

Il est donc difficile de supprimer ou de remplacer les parties constantes de noms de fichiers similaires contenant le caractère de soulignement.

UNE SOLUTION

En cherchant sur Google, j'ai trouvé la solution en utilisant powershell (Windows). La commande suivante a fait l'affaire pour moi :

get-childitem *.IIQ | foreach { rename-item $_ $_.Name.Replace("XXX_rec_14_cap", "Cap") }

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X