Comment renommer 80 000 fichiers à la fois dans Windows

8

J'ai 80 000 fichiers dans un dossier et je dois tous les renommer

filename.jpg

à

._filename.jpg

dans l'environnement Windows, je suppose de dos. La raison en est que j'ai compressé ces fichiers dans un tar.gz à partir d'Unix et copié dans Windows et pour une raison quelconque, les noms de fichiers ont changé.

Pourriez-vous me dire quelle est la commande pour le faire? Merci

anévrisme
la source

Réponses:

3

Vous pouvez utiliser la commande intégrée renameouren :

ren *.jpg ._*.jpg

Cependant, comme pour toutes ces choses, essayez-le d'abord sur un répertoire contenant seulement quelques fichiers.

ChrisF
la source
1
J'aime votre approche, mais j'ai 2 problèmes: (1) les premières lettres des noms de fichiers sont remplacées. En d'autres termes, le "._" n'est pas ajouté au début mais il remplace les 2 premières lettres. (2) "._" ne fonctionne pas. Si j'utilise, par exemple "__" alors ça marche. Je pense que le point "." donne quelques problèmes
aneuryzm
@Patrick - Je dois admettre que je n'ai pas eu la chance de tester complètement cela, et oui, je pense que vous avez raison sur le point qui cause des problèmes.
ChrisF
C'est incorrect et ce n'est pas à cause des points. renne peut remplacer du texte que par du texte de même longueur. Par exemple, si vous avez des fichiers file1.txtet file2.txt, ren file*.txt blah*.txtfait ce que vous attendez (vous avez maintenant des fichiers blah1.txtet blah2.txt). Toutefois, si vous tapez alors ren blah*.txt myfile*.txtla commande des bombes parce qu'il renomme blah1.txtà myfile.txt(pas myfile1.txt) et ne peut donc pas renommer blah2.txtà myfile.txtparce que ce fichier existe déjà.
David Richerby
15

Voici un moyen d'utiliser PowerShell:

Accédez à votre dossier et exécutez cette commande

Get-ChildItem *.jpg | Rename-Item -newname {"._" + $_.Name}

Version courte bonus supplémentaire:

gci *.jpg | ren -newname {"._" + $_.Name}
Siim K
la source
6

J'ai 2 solutions:

  1. Tous les fichiers sont dans le même dossier

    • exécutez la commande suivante à partir de l'invite de commandes sur ce dossier:

      for /f "delims=¯" %i in ('dir /b /on') do ren "%i" "._%i"
      
  2. solution complète quand il y a des fichiers dans les sous-dossiers ET quand vous voulez remplacer les "n" premiers caractères par une chaîne que vous voulez: D

    • créer un fichier batch avec la commande suivante
    • changer les paramètres variables en ce que vous voulez
      • path: mettre à ""l' intérieur du chemin racine de vos fichiers (par exemple "C: \ documents and settings \ user \ desktop \ new folder"
      • numfirstchars2replace: mettre un nombre avec les premiers caractères à remplacer (dans votre cas, 2)
      • str2put: mettre une chaîne à ajouter comme préfixe du nouveau nom de fichier (dans votre cas, ._)
    • l'exécuter dans un dossier différent de celui où se trouvent les fichiers


@echo off

::only to tell user what this bat are doing
echo.1.initializing...

::enable that thing to allow, for example, incremental counter in a for loop :)
echo.- EnableDelayedExpansion
SETLOCAL EnableDelayedExpansion

::variables
echo.- variables
:: - place here the absolute root path of your files
set path="put here where are the root folder of your files"
set pathbak=%cd%
set numfirstchars2replace=2
set str2put=._

::go to %path% and its driveletter
echo.- entering the path you want
for /f "delims=¯" %%i in ('echo.%path%') do %%~di
cd %path%

::search all subfolders and save them to a temp file
echo.- searching for subfolders
echo.%path%>%temp%\tmpvar.txt
for /f "delims=¯" %%i in ('dir /s /b /on /ad') do echo."%%i">>%temp%\tmpvar.txt

::execute command for root folder and all found subfolders
echo.
echo.2.executing...
for /f "delims=¯" %%i in (%temp%\tmpvar.txt) do (
  cd %%i
  echo.- in folder: %%i
  for /f "delims=¯" %%j in ('dir /b /on /a-d') do (
    set newname=%%j
    set newname=!newname:~%numfirstchars2replace%,1000!
    echo.- renaming from "%%j" to "%str2put%!newname!"...
    ren "%%j" "%str2put%!newname!"
  )
)

echo.
echo.3.exiting...
::return to %pathbak% and its driveletter
for /f "delims=¯" %%i in ('echo.%pathbak%') do %%~di
cd %pathbak%

@echo on
kokbira
la source
entièrement testé :) il résout votre problème, y compris avec certaines spécifications que vous donnez dans le commentaire @ChrisF. note: dans "delims = ¯", si "¯" est utilisé dans un nom de fichier, changez "¯" avec un autre caractère que vous connaissez qui n'est pas utilisé dans les noms de fichiers
kokbira
voté à cause de votre script incroyablement long pour simplement faire une boucle et renommer qch. :)
wullxz
eh bien, justement, je pourrais faire une boucle "for / f" avec tous les fichiers triés par nom puis les renommer en "._lenameX.jpg" avec X comme numéro de commande, mais j'ai pensé d'une manière à le faire pour d'autres cas - si à l'avenir un problème similaire apparaît, quelqu'un peut modifier certaines commandes ...
kokbira
vous pouvez utiliser "delims =" au lieu de "delims = ¯" (j'ai oublié cela: D). vous pouvez également utiliser for / f à la place de for / f "delims =" car il fait ce que je veux dans ce cas ...
kokbira
3

S'ils se trouvent tous dans le même dossier, vous pouvez tous les sélectionner avec Control+ A, puis appuyer sur F2pour renommer l'un d'eux. Tous les fichiers suivants seront nommés fichier (2), fichier (3), etc.

bruno077
la source
3

Essayez Powershell (préinstallé dans Windows 7):

Get-Childitem /path/to/your/files | foreach-object { move-item $_ $("._" + $_.name) }

(testé dans mon répertoire de téléchargement.)

Edit : le code de Siim K ajoutera un ".jpg" supplémentaire à chaque "._filename.jpg". Supprimez ce dernier ".jpg" dans le code de Siim K et vous disposez d'un code court et élégant pour renommer vos fichiers.

wullxz
la source
merci, mis à jour. Code réutilisé à partir d'une commande de renommage similaire qui a nécessité la manipulation d'extension et n'a pas remarqué.
Siim K
3

Total Commander a un très bon outil multi-renommage.

György Andrasek
la source
0

J'ai toujours trouvé que Flash Renamer était un bon outil pour renommer des fichiers par lots.

Il a des versions d'essai et complètes (20 $) et peut renommer des fichiers en fonction des métadonnées - très utile pour renommer des fichiers MP3 pour lesquels je l'utilise principalement.

ajcw
la source
0

Si vous cherchez un moyen convivial de renommer en bloc, vous pouvez essayer l'outil gratuit Ant Renamer , il existe une énorme liste d'actions que vous pouvez prendre et il donne également un aperçu pratique avant de renommer. Je l'utilise beaucoup pour jouer avec mes bibliothèques de musique, de photos ou de vidéos.

Chris
la source
0

J'ai utilisé ce programme gratuit File Renamer avec d'excellents résultats. De nombreux filtres et options différents, en plus de vous donner la possibilité de tester les résultats. Une interface utilisateur un peu dépassée peut-être mais qui fonctionne comme un champion.

http://www.webxpace.com/software/freeware.shtml#FileRenamer

Mark A
la source