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.