Comment renommer plusieurs fichiers dans plusieurs dossiers avec une seule commande


11

Nous voulons renommer nos *.htmlfichiers *.phpmais (malheureusement) nous n'avons pas assez de connaissances pour le faire avec une commande d'invite cmd et / ou un fichier batch.

Le problème est que chaque fichier est dans un dossier séparé - et je parle de plus de 750 noms de dossiers différents. L'utilisation de caractères génériques pour les fichiers que je connais est le * mais l'utilisation d'un caractère générique pour les dossiers m'est inconnue. Nous devons probablement utiliser la FORcommande (dans l'invite de commande), mais je suis bloqué.

La structure de dossiers que nous utilisons est:

parent-dossier / enfant-dossier / petit - enfant-dossier / fichier .html

par exemple:

  • games/A/game_name/file.html
  • games/B/game_name/file.html
  • games/C/game_name/file.html etc.

Le dossier parent est le même pour tous les fichiers; les dossiers enfants et petits-enfants sont différents pour la plupart des fichiers.

Après avoir renommé ces fichiers, *.phpje suppose que ce qui suit dans le .htaccessfera une redirection permanente.

RedirectMatch 301 (.*)\.html$ http://oursite.com$1.php

Réponses:


14

get-childItem -recurse | Where {$_.extension -eq ".html"} | rename-item -newname { $_.name -replace ".html",".php" }

Cela fonctionnera dans PowerShell. Si vous avez Windows 7 ou Vista, vous devriez l'avoir installé par défaut. Si vous êtes sous XP, vous pouvez le télécharger ici .


Soandos, Chapeau !!!!!!!!!!!! Beaucoup de remerciements de ce côté, fonctionne comme un charme.
Charles

@Charles, si cela a résolu votre problème, veuillez cliquer sur la coche, afin que tous ceux qui le voient sauront que cela a fonctionné. Bienvenue dans SuperUser.
soandos

3

En ligne de commande:

for /f "delims=*" %a in ('dir *.html /b /s') do ren "%a" *.php

Remarque: Vous pouvez remplacer *.htmlpour d'autres caractères génériques, par exemple d:\www\*.html.

Remarque 2: si vous utilisez la commande dans un fichier de commandes, remplacez %apar %%a(ne me demandez pas pourquoi)


Pourquoi dis-tu "delims=*"?  "delims="devrait être assez bon (c.-à-d., pourquoi spécifiez-vous un délimiteur *?
G-Man dit 'Reinstate Monica'

1

Flexible Renamer est un excellent petit programme qui gérera plusieurs types différents de renommer les recherches / remplacements. Il accepte les expressions régulières et a des modèles communs prédéfinis. De plus, il vous permet d'inclure des éléments dans des sous-dossiers ou d'opérer sur des dossiers eux-mêmes. Il vous donne également un aperçu de toutes les modifications qui seront apportées. Je l'utilise depuis des années et je le recommande vivement.

http://download.cnet.com/Flexible-Renamer/3000-2248_4-28799.html



En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.