Comment trouver et remplacer un caractère dans les noms de fichiers dans Windows 7 à l'aide de l'Explorateur?


16

Je veux remplacer tous les caractères de soulignement ( _) par un espace ( ) dans un nom de fichier.

Comment puis-je le faire rapidement, quand j'ai beaucoup de _caractères à remplacer?


4
Comme les réponses l'indiquent, il n'y a / aucun / moyen de le faire dans l'Explorateur. Vous avez besoin d'un script ou d'un renamer de fichier batch.
— Shinrai

Réponses:


20

vbScript devrait le faire pour vous. Créez un fichier appelé "rename_underscores.vbs" contenant les éléments suivants.

Set objFso = CreateObject("Scripting.FileSystemObject")
Set Folder = objFSO.GetFolder("c:\test\")

For Each File In Folder.Files
    sNewFile = File.Name
    sNewFile = Replace(sNewFile,"_"," ")
    if (sNewFile<>File.Name) then 
        File.Move(File.ParentFolder+"\"+sNewFile)
    end if

Next

Assurez-vous que le nom du dossier est correct. (Dans l'exemple, j'ai utilisé c: \ test) Et puis double-cliquez sur votre fichier pour renommer.


Notez que la même chose fonctionne avec les dossiers, en utilisant 'Folder.SubFolders' au lieu de 'Folder.Files'.
— Max Hohenegger

fonctionne parfaitement, il suffit de prendre soin du chemin. +1 merci
— Raj

4

Je recommande d'utiliser un outil tiers comme Bulk Rename Utility . C'est gratuit et il a un installateur de moins de 1 Mo.


1
Que faire si le nom du fichier est "this_is_a_test.ext"?
— seanyboy

1
Bulk Rename Utility est une GRANDE applications. C'est très polyvalent et je ne pense pas que vous puissiez obtenir la même chose avec Explorer.
— Alex Angelico

La commande dos serait un peu plus compliquée que ça. Je vais en simuler un.
— RJFalconer

3

C'est dans les domaines d'un fichier dos bat. Créez un fichier bat (Nouveau-> Fichier texte, renommez l'extension en .bat) puis copiez-y les sections bleues ci-dessous.

Je vais le diviser en sections et expliquer ce qu'il fait.


Imprimer l'état actuel du répertoire pour une comparaison ultérieure

dir /b

Liste les fichiers dans le répertoire, puis pour tous ceux qui contiennent un trait de soulignement et se terminent en .txt, appelez ProcessFile dessus.

for %%f in (*_*.txt) do call :ProcessFile %%f
goto :finished

La syntaxe "str =% str: x = y%" remplace les instances de x par y. Dans ce cas, nous remplaçons "_" par rien

:ProcessFile
set str=%1
rename %1 %str:_=%
goto :eof

C'est ça!

Maintenant, il imprime simplement ce qui a été changé afin que nous puissions confirmer qu'il fonctionne comme prévu;

:finished
echo ----
dir /b

Résultats (ne fait pas partie du fichier bat)

baz_ing.txt
big_rawr.foo
foo_bar.txt
multiple_underscores_test.txt
----
bazing.txt
big_rawr.foo
foobar.txt
multipleunderscorestest.txt

2

Comme d'autres l'ont mentionné, il n'y a aucun moyen de faire exactement ce que vous voulez sans utiliser un script ou un fichier batch. Par exemple, dans PowerShell, vous pouvez faire ce que vous voulez assez facilement:

cd "C:\Users\MyName\Documents\MyDirectory"
Dir | Rename-Item –NewName { $_.name –replace "_"," " }

Assurez-vous simplement de remplacer "C: \ Users \ MyName \ Documents \ MyDirectory" par le chemin d'accès à votre répertoire.

Pour plus de détails et d'autres options, y compris certaines choses que vous pouvez faire en utilisant simplement Explorer, voir ici: http://www.howtogeek.com/111859/how-to-batch-rename-files-in-windows-4-ways- renommer plusieurs fichiers /


2

Voici mon script ruby ​​renommer par lots . Je n'ai pas utilisé d'autres outils de renommage par lots mais je pense que mon script est très facile à utiliser et très polyvalent. Voici la commande pour votre cas:

ruby bren.rb *_* "_/ "

J'ai configuré mon environnement Windows de telle manière que bren.rb puisse être exécuté comme un exécutable à partir de n'importe quel répertoire.



1

Cela ne répond pas explicitement à la question ('.. dans Explorer'), mais j'ai trouvé que le logiciel le plus utile pour ce faire était Adobe Bridge (gratuit)

  1. Sélectionner tous les fichiers dans Bridge
  2. Clic droit> Renommer par lot

Bonus supplémentaire: prend en charge Regex!

Capture d'écran

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.