Как найти и заменить символ в именах файлов в Windows 7 с помощью проводника?


16

Я хочу заменить все символы подчеркивания ( _) на пробел ( ) в имени файла.

Как я могу сделать это быстро, когда мне нужно _заменить много символов?


4
Как показывают ответы, в Проводнике / нет / нет способа сделать это. Вам нужен скрипт или переименователь командного файла.
Shinrai

Ответы:


20

vbScript должен сделать это за вас. Создайте файл с именем «rename_underscores.vbs», содержащий следующее.

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

Убедитесь, что имя папки указано правильно. (В примере я использовал c: \ test) И затем дважды щелкните ваш файл, чтобы сделать переименование.


Обратите внимание, что то же самое работает с папками, используя «Folder.SubFolders» вместо «Folder.Files».
Макс Хоэнгеггер

работает отлично, просто нужно позаботиться о пути. +1 спасибо
Радж

4

Я рекомендую использовать сторонние инструменты, такие как Bulk Rename Utility . Это бесплатно и имеет установщик менее 1 МБ.


1
Что, если имя файла «this_is_a_test.ext»?
seanyboy

1
Bulk Rename Utility - это БОЛЬШИЕ приложения. Это очень универсально, и я не думаю, что вы можете достичь того же с Explorer.
Алекс Анджелико

Команда DOS будет немного сложнее, чем это. Я буду издеваться над одним.
RJFalconer

3

Это находится в пределах доску файл летучей мыши. Создайте файл bat (New-> Text file, переименуйте расширение в .bat), затем скопируйте в него синие разделы ниже.

Я разделю его на разделы и объясню, что он делает.


Распечатайте текущее состояние каталога для сравнения позже

dir /b

Перечислите файлы в каталоге, затем для всех тех, которые содержат подчеркивание и заканчиваются на .txt, вызовите для них ProcessFile.

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

Синтаксис "str =% str: x = y%" заменяет экземпляры x на y. В этом случае мы заменяем «_» ничем

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

Это оно!

Теперь он просто печатает то, что было изменено, чтобы мы могли подтвердить, что оно работает как положено;

:finished
echo ----
dir /b

Результаты (не входит в файл bat)

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

2

Как уже упоминали другие, нет способа сделать именно то, что вы хотите, без использования скрипта или пакетного файла. Например, в PowerShell вы можете делать то, что хотите, довольно легко:

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

Обязательно замените «C: \ Users \ MyName \ Documents \ MyDirectory» на путь к вашему каталогу.

Для более подробной информации и других опций, включая некоторые вещи, которые вы можете сделать, используя только Explorer, смотрите здесь: http://www.howtogeek.com/111859/how-to-batch-rename-files-in-windows-4-ways- к переименованию многодисковых файлов /


2

Вот мой пакетный сценарий переименования рубинов . Я не использовал другие инструменты пакетного переименования, но я думаю, что мой скрипт очень прост в использовании и очень универсален. Вот команда для вашего случая:

ruby bren.rb *_* "_/ "

Я настроил свою среду Windows таким образом, чтобы bren.rb мог выполняться как исполняемый файл из любого каталога.



1

Это не дает четкого ответа на вопрос («.. в Проводнике»), но я нашел, что самым полезным программным обеспечением для этого был Adobe Bridge (Free)

  1. Выбрать все файлы в Bridge
  2. Щелкните правой кнопкой мыши> Пакетное переименование.

Дополнительный бонус: поддерживает регулярные выражения!

Скриншот

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.