Как переименовать 80.000 файлов одновременно в Windows


8

У меня 80 000 файлов в папке, и мне нужно переименовать все их из

filename.jpg

в

._filename.jpg

в среде Windows, я думаю, из DOS. Причина в том, что я сжал эти файлы в tar.gz из unix и скопировал в windows, и по некоторым причинам имена файлов изменились.

Не могли бы вы сказать мне, что команда сделать это? Спасибо

Ответы:


3

Вы можете использовать встроенную renameилиren команду:

ren *.jpg ._*.jpg

Хотя, как и во всех этих случаях, попробуйте сначала каталог, содержащий всего несколько файлов.


1
Мне нравится ваш подход, но у меня есть 2 вопроса: (1) заменены первые буквы имен файлов. Другими словами, «._» не добавляется в начале, но заменяет первые 2 буквы. (2) «._» на самом деле не работает. Если я использую, например "__", то это работает. Я думаю, что точка "." дает некоторые проблемы
aneuryzm

@ Патрик - Я должен признать, что у меня не было возможности полностью проверить это, и да, я думаю, вы правы насчет проблем, вызывающих проблемы.
ChrisF

Это неверно, и это не из-за точек. renможно заменить текст только текстом той же длины. Например, если у вас есть файлы file1.txtи file2.txt, ren file*.txt blah*.txtделает то , что вы ожидаете (теперь у вас есть файлы blah1.txtи blah2.txt). Однако, если вы затем введите ren blah*.txt myfile*.txtкоманду бомбу, потому что он переименовывает blah1.txtк myfile.txt(не myfile1.txt) , а затем не может переименовать blah2.txtв myfile.txtпотому , что файл уже существует.
Дэвид Ричерби

15

Вот способ использования PowerShell:

Перейдите в свою папку и выполните эту команду

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

Дополнительная бонусная короткая версия:

gci *.jpg | ren -newname {"._" + $_.Name}

6

У меня есть 2 решения:

  1. Все файлы находятся в одной папке

    • запустите следующую команду из командной строки в этой папке:

      for /f "delims=¯" %i in ('dir /b /on') do ren "%i" "._%i"
      
  2. Полное решение, когда есть файлы в подпапках И когда вы хотите заменить первые n символов на строку, которую вы хотите: D

    • создайте командный файл с помощью следующей команды
    • измените параметры переменной на то, что вы хотите
      • path: поместите ""в корневой каталог ваших файлов (например, «C: \ documents and settings \ user \ desktop \ new folder»
      • numfirstchars2replace: поставить число с первыми символами для замены (в вашем случае, 2)
      • str2put: поместите строку для добавления в качестве префикса нового имени файла (в вашем случае, ._)
    • запустить его в папке, отличной от того, где находятся файлы


@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

полностью протестирован :) он решает вашу проблему, в том числе с некоторыми спецификациями, которые вы даете в комментарии @ChrisF. примечание: в «delims = ¯», если «¯» используется в имени файла, замените «¯» на другой известный вам символ, который не используется в именах файлов
kokbira

проголосовал за ваш невероятно длинный скрипт, чтобы просто сделать цикл и переименовать sth. :)
wullxz

ну, справедливо, я мог бы сделать цикл «for / f» со всеми файлами, отсортированными по имени, а затем переименовать их в «._lenameX.jpg» с X в качестве номера заказа, но я подумал, как это сделать для других случаев - если в будущем появится похожая проблема, кто-то может изменить некоторые команды ...
kokbira

Вы можете использовать «delims =» вместо «delims = ¯» (я забыл, что: D). также вы можете использовать для / f intead для / f "delims =", потому что он делает то, что я хочу в этом случае ...
kokbira

3

Если они все находятся в одной папке, вы можете выбрать их все с помощью Control+, Aа затем нажать, F2чтобы переименовать одну из них. Все последующие файлы будут называться file (2), file (3) и т. Д.


3

Попробуйте Powershell (предустановлен в Windows 7):

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

(проверил это в моем загрузочном каталоге.)

Изменить : код Сиима К добавит дополнительный ".jpg" к каждому "._filename.jpg". Удалите этот последний «.jpg» из кода Siim K, и у вас будет короткий, элегантный код для переименования ваших файлов.


спасибо, обновил. Повторно использовал код из аналогичной команды переименования, которая потребовала манипулирования расширением и не заметила.
Сийм К


0

Я всегда считал Flash Renamer хорошим инструментом для переименования файлов в пакетном режиме.

Он имеет пробную и полную версии ($ 20) и может переименовывать файлы на основе метаданных - очень полезно для переименования файлов MP3, для которых я чаще всего использую.


0

Если вы ищете удобный для пользователя способ переименования в массовом порядке, вы можете попробовать бесплатный инструмент Ant Renamer , есть огромный список действий, которые вы можете предпринять, и он также дает удобный предварительный просмотр перед любым переименованием. Я часто использую его, когда возиться с моей музыкой, фото или видео библиотеками.


0

Я использовал эту бесплатную программу File Renamer с отличными результатами. Множество различных фильтров и опций, плюс это дает вам возможность проверить результаты. Возможно, немного устаревший интерфейс, но работает как чемпион.

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

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