Як перейменувати 80 000 файлів одночасно в Windows


8

У папці у мене 80 000 файлів, і мені потрібно перейменувати всі

filename.jpg

до

._filename.jpg

в середовищі Windows, я думаю, з дос. Причина полягає в тому, що я стиснув ці файли в tar.gz з unix і скопіював у вікна, і чомусь змінилися імена файлів.

Не могли б ви сказати мені, яка команда це робити? Дякую

Відповіді:


3

Ви можете використовувати вбудований renameабоren команду:

ren *.jpg ._*.jpg

Хоча, як і всі ці речі, спершу спробуйте це в каталозі, що містить лише кілька файлів.


1
Мені подобається ваш підхід, але у мене є 2 питання: (1) перші літери імен файлів замінені. Іншими словами, "._" не додається на початку, але він замінює перші 2 літери. (2) "._" насправді не працює. Якщо я використовую, наприклад, "__", це працює. Я думаю, що крапка, "." дає деякі питання
аневризм

@Patrick - Я мушу визнати, що я не мав шансу повністю перевірити це, і так, я думаю, ти маєш рацію щодо точки, яка викликає проблеми.
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. повне рішення, коли в підпапках є файли І коли ви хочете замінити перші "символи" на потрібну рядок: D

    • створити пакетний файл із наступною командою
    • змінити змінні параметри на те, що ви хочете
      • path: помістити всередину ""кореневого шляху ваших файлів (наприклад, "C: \ документи та налаштування \ 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

проголосували через ваш неймовірно довгий сценарій просто зробити цикл і перейменувати що-небудь. :)
wullxz

ну, справедливо, я міг зробити цикл "для / f" зі всіма файлами, відсортованими за назвою, а потім перейменувавши їх на "._lenameX.jpg" з X як номер замовлення, але я подумав, як це зробити для інших випадків - якщо в майбутньому з'явиться подібна проблема, хтось може змінити деякі команди ...
kokbira

ви можете використовувати "delims =" замість "delims = ¯" (я забув, що: D). також ви можете використовувати для / f intead з для / f "delims =", тому що це робить те, що я хочу в такому випадку ...
kokbira

3

Якщо всі вони знаходяться в одній папці, ви можете вибрати їх усі за допомогою Control+, Aа потім натиснути, F2щоб перейменувати одну з них. Усі наступні файли будуть називатися файлом (2), файлом (3) тощо


3

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

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

(перевірив це в моїй редакції для завантаження.)

Редагувати : Код Siim K додасть додатковий ".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.