Dosyaları nasıl yeniden adlandırabilirim?


126

Deseni ile adlandırılmış bir sürü dosya var 99 - DescriptiveName.txtve öndeki numarayı kaldırmak istiyorum, bu yüzden sadece var DescriptiveName.txt.

Bunu nasıl yapabilirim? Bunu komut satırından yapabilir miyim yoksa bunu yapabilen bir yardımcı program var mı?

Yanıtlar:


94

Başlığında "dos" yazdığını biliyorum, ama bunu yapmanın bir yolunu aradığın izlenimini alıyorum ve bunun en iyi yol olup olmadığını merak ediyorum.

Bunun için bulduğum en iyi araç, Toplu Yeniden Adlandırma Yardımcı Programıdır .

Toplu Yeniden Adlandırma Yardımcı Programı

Bu bir komut satırı aracı değildir, ancak gerçekten bu şekilde kullanmak istiyorsanız komut satırı sürümleri vardır .

GUI sürümünü çok kullandım ve çok güçlü, çok hızlı ve kullanımı oldukça kolay.

Oh, ve kişisel kullanım için ücretsizdir .


Maalesef, araç ticari kullanım için ücretsiz değildir :(
AntonK 28:17

Bu yüzden kişisel kullanım için ücretsiz olduğunu söyledim.
Jim McKeeth,

2
Bu süper hızlı bir araçtır. Birkaç arama ve değiştirme mantığı kullanarak 6.000 dosya sorunumu saniyeler içinde çözdü. Notepad ++ kullanmak gibi ancak binlerce dosyayı düzenlemek gibidir. Harika bir çözüm, teşekkürler!
Fıstık

59

Küçük bir PowerShell betiği:

$args | Rename-Item -NewName { $_.Name.ToLower() -replace '\d+ - ' }

Daha karmaşık normal ifadelerle birlikte, bu şöyle bir şey olabilir:

ls | Rename-Item -NewName {$_ -replace '(\d+) - (.*).mp3', '$2 - $1.mp3' }

'01 - Beginning.mp3 'gibi şeyleri' Beginning - 01.mp3 'haline getirir.

Yeniden adlandırmadan önce isimleri kontrol etmek için -WhatIfparametreyi kullanın Rename-Item.


1
@sysrqb, lütfen biraz daha araştırın.
Joey

Değiştirme iki dize ifadesi gerektirmiyor mu? İkincisinde iki tane var, ilki yok. ... -replace '\d+ - ',''. Ayrıca, ilki daha iyi olduğuna inanıyorum, sadece regex kullanarak başlangıçtan sıyrılmak. Buna rağmen ^ çapasını ifadenin başına eklemeniz gerektiğine inanıyorum, böylece yalnızca sayılarla başlayan adlarla eşleşiyor.
Xalorous

1
@ Xalorous: Şey, basitçe deneyebilirsin. -replacesağ tarafta sadece bir argüman olabilir, bu durumda ikincisi dolaylı olarak boş dizedir.
Joey

Bu beni kurtardı .. Toplu Yeniden Adlandırma Yardımcı Programı şimdi çöküyor ve başka birçok çözüm denedim. Regexp ile rahat olan insanlar için bu daha iyidir. Çok teşekkür ederim !!
Inkh Su Tesou

24

Windows komut satırını gerçekten kullanmak istiyorsanız (bir şey indirmek istemiyorsanız), aşağıdaki gibi yapabilirsiniz:

dir /B > fileList.txt
for /f "tokens=1,2,3" %i in (fileList.txt) DO ren "%i %j %l" %l

İlk satır, dosyaların listesini fileList.txt adlı bir dosyaya çıkarır. İkinci satır, listedeki adların her birini 3, #, "-" ve adın kalan bölümlerine ayırır. Bunların her biri için rename komutunu yapar.


2
Basitleştirmek için ilk satırı kaldırın ve yapın:for /f "tokens=1,2,3" %i in ('dir /B') DO ren "%i %j %l" %l

Bunun eski olduğunu biliyorum ama hala kesin bir cevap - sadece% l (% L)% k (% K) olmalı
Donald Byrd,

24

AntRenamer , yeniden adlandırma modelini tanımlamayı oldukça kolaylaştırır; önceden hazırlanmış birçok kişi var (ve eylemlerin bir ön izlemesini verir):

AntRenamer

kişisel ve ticari kullanım için ücretsiz.


19

eski okul:

Bir DIR yapabilirsiniz ve çıktıyı DIR * .TXT> TEMP.BAT'de olduğu gibi bir dosyaya yönlendirebilirsiniz.

Sonra neye ihtiyacınız olmadığını çıkarmak için bir editör kullanın ve ihtiyaç duyduğunuz parçaları değiştirin. Üst satır olarak bir "@ echo off" ekleyin, kaydedin ve çalıştırın.


Bu sayfadaki referansı buradaki eski bir doktora doktorundan aldım : dostips.com/DosCommandIndex.htm ; Eski DOS ile yapabilecekleriniz şaşırtıcı.
nik

16

Başka bir seçenek: Büyük Dosya Renamer

Birden çok dosyayı ve dosya uzantısını kolayca yeniden adlandırmanızı sağlar . Çok hızlı ve basit!

İleri düzey kullanıcılar ve geliştiriciler için düzenli ifadeler kullanmak mümkündür .

Hareket halinde görün:

görüntü tanımını buraya girin


1
BT, alt klasörlerdeki tüm dosyaları açmayı nasıl seçebiliriz? Yaklaşık 50 alt klasöre (tekrarlı olarak) ve içinde birden fazla dosya bulunan bir kök klasörüm var.
Pacerier

1
@Pacerier Java dosyası seçicisinin buna izin vermediğini düşünüyorum. Bir klasör seçmek için izin verme fikrine sahiptim ve özyinelemeli arama dahil edilebilir. Bunu not edeceğim ve gelecekteki bir sürümde ekleyeceğim!
IvanRF

13

Kullandığım Toplam Komutanı bu gibi şeyler için 'ın çoklu yeniden adlandırma aracı (Ctrl + M). Sayılması çok fazla olan faydalı araçlarının kullanımı kolaydır ve gerekirse düzenli ifadeler ve şablonlar da kullanabilir. Oh, ve kesinlikle herhangi bir değişiklik yapmadan önce size bir önizleme verir.

Bu, Toplam Komutanı tavsiye ederek yanıtladığım üçüncü veya dördüncü soru ... Onlardan bir komisyon almalıyım ;-)


11

Memnun kaldığım araç ReNamer . Aynı zamanda benim için yararlı olan yeniden adlandırma kurallarının kaydedilmesini de destekliyor.

Aşağıda, ilk satırdan önce metni silme örneği, ancak tanımlayabileceğiniz başka kurallar da var.

görüntü tanımını buraya girin


5

Bunun için Free Commander Portable (ücretsiz) yazılımı kullandım :

  1. Seçin veya yeniden adlandırılacak dosyalara veya dizinlere gidin
  2. [Ctrl-M] tuşuna basın (veya Dosya> Çoklu isim ver)
  3. durumunuza uygun olan alanları doldurun
  4. önizlemenin beklediğiniz şeyi gösterdiğini doğrulayın
  5. Git!

4

İleri düzey kullanıcılar ve geliştiriciler için RegexRenamer'i öneririm .

RegexRenamer ekran görüntüsü

Profesyonelin:

  • Çok basit kullanıcı arayüzü;
  • Geliştiricilerin aşina olduğu düzenli ifadeler;
  • GPLv2;

Eksileri:

  • Bu bir komut satırı değil! :)

Seçilen klasördeki tüm alt klasörler için özyinelemeli çalışamadı!
Luckylooke


3

İşte bir komut satırı çözümü --- dosya isimlerinde "kalıplarla" çalışmayı kolaylaştırmak için özel olarak yazdığım bir Java programı. Ücretsiz ve açık kaynak olduğundan, değiştirmekten çekinmeyin:

RenameWand
http://renamewand.sourceforge.net/

Bazı ilgili kullanım örnekleri:

"-"Dosya adından önceki her şeyi bırak :

java -jar RenameWand.jar  "<a> - <b>"  "<b>"

Son değiştirilen saate göre sıralama yaparak, dosya adına 3 basamaklı bir sayı verin.

java -jar RenameWand.jar  "<a>"  "<3|#FT> <a>"

Dosya adının bölümlerini yeniden düzenleyin ve durumu değiştirin:

java -jar RenameWand.jar  "<album> - <artist> - <song>.<ext>" 
                          "<artist.upper> <album.title> - <song>.<ext.lower>"

3

Bir ay önce RenPhoric'i keşfettim . Süper. Ve ücretsiz .

Karmaşık bir arayüz yok ve istediğim gibi tam olarak yeniden adlandırabildim. Düzenli İfade yetenekli. O zamandan beri başka bir şey kullanmadım.


2

Cylog'un WildRename'sini seviyorum . Güçlü, henüz kullanımı kolay ve birçok özelliğe sahip:

  1. hızlı
  2. dize manipülasyonu
  3. sayaçlar
  4. joker
  5. düzenli ifadeler
  6. ikame
  7. durumda dönüştürme
  8. Kerestecilik
  9. simülasyon (sonuçları gerçekten uygulamadan göstermek)

görüntü tanımını buraya girin


2

Yukarıdaki @zdan gibi, bunu komut satırından yaptım (Windows'ta "cmd.exe" kullanarak). Benim özel davam için birkaç adım attı, ancak küçük bir araştırma bunu çözdü.

Zdan gibi, listeyi bir TXT dosyasına gönderirim, sonra kullanılır tokensve delimsdosyaları buna göre yeniden adlandırırım. Benim durumumda, buna benzer bir dosya listesiyle başladım:

name-01-02-2012.csv

Dosya tarihi kısmının y / m / d sırasına göre olmasını istedim, sonunda "ad" kısmıyla şöyle:

2012-01-02-name.csv

Bunu en üst düzeyde yapmak için aşağıdaki kodu kullandım. Bu şekilde yapılırken, ".csv" uzantısı dahil dosya adının TÜM bölümlerinin göz önüne alındığını unutmayın. Bu beni ilk defa karıştırdı.

dir /B > fileList.txt
for /f "tokens=1,2,3,4,5 delims=-." %i in (fileList.txt) DO ren "%i-%j-%k-%l.%m" %l-%j-%k-%i.%m

tokensDosya adının "parçaları" dir, delimsayırıcılardır. Benim durumumda 2 sınırlayıcısının (bir çizgi ve bir nokta) olduğunu unutmayın.

Şahsen "Toplu Yeniden Adlandır" uygulamasını önemsemiyorum. Diğerlerinin de belirttiği gibi, GUI iğrenç ve sezgisel değil. Küçük bir araştırma ve basit kodlama ile bu işler verimli ve hızlı bir şekilde yapılabilir.


2

Komik isim ve komut satırı aracı çok güçlü, çok hızlı ve kullanımı oldukça kolaydır. "Metin Bul ve Değiştir" FART http://fart-it.sourceforge.net/ BÜYÜK İŞLER! txt dosyalarındaki kelimeleri de yeniden adlandırabilir.

KULLANIM

Usage: FART [options] [--] <wildcard>[,...] [find_string] [replace_string]

Options:
 -h --help          Show this help message (ignores other options)
 -q --quiet         Suppress output to stdio / stderr
 -V --verbose       Show more information
 -r --recursive     Process sub-folders recursively
 -c --count         Only show filenames, match counts and totals
 -i --ignore-case   Case insensitive text comparison
 -v --invert        Print lines NOT containing the find string
 -n --line-number   Print line number before each line (1-based)
 -w --word          Match whole word (uses C syntax, like grep)
 -f --filename      Find (and replace) filename instead of contents
 -B --binary        Also search (and replace) in binary files (CAUTION)
 -C --c-style       Allow C-style extended characters (\xFF\0\t\n\r\\ etc.)
    --cvs           Skip cvs dirs; execute "cvs edit" before changing files
 -a --adapt         Adapt the case of replace_string to found string
 -b --backup        Make a backup of each changed file
 -p --preview       Do not change the files but print the changes

Biraz daha detay? O mu dosyaları yeniden adlandırmak ?
von

Evet, -flistelenen seçenek.
user1016274


2
@Eko kapalı
setlocal enabledelayedexpansion
X = 5 olarak ayarla
FOLDER_PATH = 'a ayarlayın.
% FOLDER_PATH%
%% f için (*) içindeki %% f neq% ~ nx0 (
    "dosya adı = %% ~ nf" olarak ayarlayın
    set "dosyaadı =! dosyaadı: ~% X%!"
    ren "%% f" "! dosyaadı! %% ~ xf"
)
popd

bunu bir toplu iş dosyasına kaydedin ve çalıştırın


Bu iyi, ama X'i nasıl değişken yapabilir (parametre olarak iletebilirim)?
Kangkan

@Kangkan bunu beğendi:set /p "X=Enter the value for X: "
Kidquick

1

Bir üniversitedeki dersleri yönetmek için Blackboard kullanıyorum. Toplu olarak bir atama indirdiğimde (Blackboard'da, derecelendirme sütununun üst kısmına tıklayın, ardından "atama dosyası indirme" Blackboard, dosya isminin Windows'da geçerli olması için çok uzun süren dosya adına bir sürü fazladan şey ekler.

İşte nasıl görünüyorlar:

Recitation20Assignment_studentname_attempt_2013-03-01-20-03-09_Exercise28129.docx

Ve istediğim de buydu

studentname.docx

Bu yüzden @zdan ve @ gtr1971 'in önerdiği yaklaşımı kullandım, içindeki dosyaları içeren bir komut penceresi açarak (CMD.EXE). Ardından, tüm dosya adlarını bir belgeye koymak için bu komutu çalıştırın.

dir /b >filelist.txt

Belgeyi düzenleyin ve klasör adlarını vb. Kaldırın.

Blackboard tarafından eklenen dosya adı öğelerini yalnızca kullanıcı adı ve dosya uzantısıyla değiştirmek için bu komutu kullanın.

for /f "tokens=1,2,3,4,5,6 delims=_." %i in (filelist.txt) do ren "%i _%j_%k_%l_%m.%n" %j.%n

Umarım bu başka birine de yardımcı olur.



1

JREN.BAT adında karma bir JScript / toplu komut satırı yardımcı programı geliştirdim. Düzenli ifade araması yaparak dosyaları yeniden adlandırabilir ve adlarını değiştirebilirim. XP'den itibaren herhangi bir Windows makinesinde yerel olarak çalışan saf komut dosyasıdır. Tam dokümantasyon betiğin içine yerleştirilmiştir.

JREN.BAT'ın geçerli dizininizde olduğunu veya henüz daha iyisi, yolunuzun içinde bir yerde olduğunu varsayarak, yeniden adlandırma göreviniz önemsiz hale gelir.

jren "^\d+[ -]+(.+)\.txt$" "$1" /i

veya

jren "^\d+[ -]+(?=.+\.)" "" /fm "*.txt"

/SAlt dizinlerde yeniden adlandırmayı yinelemeli olarak gerçekleştiren bir seçenek de dahil olmak üzere birçok seçenek vardır.


0

Ciddi bir güce ihtiyaç duyuyorsanız ve para kazanmaya istekliyseniz ... PowerGrep , piyasadaki en güçlü ve çok yönlü araçlardan biridir ... PowerGrep ile neredeyse her şeyi yeniden adlandırabilirsiniz ... ikili arama ve değiştirme ... RegEx Guru, Jan Goyvaerts tarafından yaratılmıştır .

görüntü tanımını buraya girin


Bu yardımcı program delicesine pahalı ...
Wizard79 18

Süresiz olarak ücretsiz kullanabilirsiniz ... ancak, buna değer ... Ben her zaman kullanırım.
Eddie B,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.