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
Charles
la source

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
la source
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)

ZEDA-NL
la source
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

Aaron
la source
1

À l'aide de forfiles, nous pouvons écrire un script, pour renommer les fichiers récursivement dans tous les sous-dossiers.

forfiles /S /M *.html /C "cmd /c rename @file @fname.php"   

Source: script batch pour renommer des fichiers en bloc

Srini
la source
0

TotalCommander: Recherche - Envoyer vers le Panel - Outil Multi-Renommer

Blaireau paresseux
la source