Jak mogę masowo zmieniać nazwy plików?

126

Mam kilka plików o nazwie ze wzorem 99 - DescriptiveName.txti chciałbym usunąć numer z przodu, więc po prostu mam DescriptiveName.txt.

Jak mogę to zrobić? Czy mogę to zrobić z wiersza poleceń, czy jest to narzędzie, które może to zrobić?

CodeSlave
źródło

Odpowiedzi:

94

Wiem, że w twoim tytule mówisz „in dos”, ale mam wrażenie, że po prostu szukasz sposobu na zrobienie tego i zastanawiam się, czy to najlepszy sposób.

Absolutnie najlepsze narzędzie, jakie znalazłem w tym celu, to Narzędzie do zmiany nazwy .

Bulk Rename Utility

To nie jest narzędzie wiersza polecenia, ale mają wersję wiersza polecenia, jeśli naprawdę chcesz go używać w ten sposób.

Często korzystałem z wersji GUI i jest ona bardzo wydajna, bardzo szybka i niezwykle łatwa w użyciu.

Aha, i jest ZA DARMO do użytku osobistego.

Jim McKeeth
źródło
Niestety narzędzie nie jest darmowe do użytku komercyjnego :(
AntonK
Dlatego powiedziałem, że jest darmowy do użytku osobistego.
Jim McKeeth,
2
To bardzo szybkie narzędzie. Rozwiązał mój problem z plikami 6.000 w kilka sekund, wykorzystując kilka logiki wyszukiwania i zamiany. To jak używanie Notepad ++, ale edytowanie tysięcy plików. Świetne rozwiązanie, dzięki!
Peanuts,
59

Mały skrypt PowerShell:

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

W połączeniu z bardziej złożonymi wyrażeniami regularnymi może to wyglądać następująco:

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

Co zmienia takie rzeczy jak „01 - Beginning.mp3” w „Beginning - 01.mp3”.

Użyj -WhatIfparametru on, Rename-Itemaby sprawdzić nazwy przed ich wydaniem.

sysrqb
źródło
1
@ sysrqb, proszę zbadać trochę więcej.
Joey
Czy zamiana nie wymaga dwóch wyrażeń łańcuchowych? Drugi ma dwa, pierwszy nie. ... -replace '\d+ - ',''. Ponadto uważam, że pierwszy jest lepszy, po prostu usuwając początek za pomocą wyrażenia regularnego. Chociaż uważam, że powinieneś dołączyć ^ kotwicę na początku wyrażenia, aby pasowała tylko do nazw zaczynających się od cyfr.
Xalorous,
1
@Xalorous: Cóż, możesz po prostu wypróbować. -replacemoże mieć tylko jeden argument po prawej stronie, w którym to przypadku drugi jest domyślnie pustym ciągiem.
Joey,
To mnie uratowało. Narzędzie Bulk Rename po prostu teraz ulega awarii i próbowałem tylu innych rozwiązań. Jest to znacznie lepsze dla osób, które czują się dobrze z wyrażeniami regularnymi. Dziękuję bardzo !!
Inkh Su Tesou,
24

Jeśli naprawdę chcesz użyć wiersza polecenia systemu Windows (jeśli nie chcesz czegoś pobierać), możesz to zrobić w następujący sposób:

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

Pierwszy wiersz wyświetla listę plików w pliku o nazwie fileList.txt. Drugi wiersz dzieli każdą z nazw na liście na 3 części: #, „-” i resztę nazwy. Dla każdego z nich wykonuje polecenie zmiany nazwy.

zdan
źródło
2
Usuń pierwszy wiersz, aby go uprościć i wykonaj:for /f "tokens=1,2,3" %i in ('dir /B') DO ren "%i %j %l" %l
Wiem, że to stare, ale wciąż solidna odpowiedź - tylko% l (% L) powinien być% k (% K) [przyrost tokenów od% i (% I), więc I, J, K ...]
Donald Byrd
24

AntRenamer ułatwia zdefiniowanie wzorca zmiany nazwy; jest już wiele przygotowanych (i daje podgląd działań):

AntRenamer

Bezpłatnie do użytku osobistego i komercyjnego.

Gnoupi
źródło
19

stara szkoła:

Możesz zrobić DIR i przekierować wyjście do pliku, jak w DIR * .TXT> TEMP.BAT

Następnie użyj edytora, aby wyjąć to, czego nie potrzebujesz i zmodyfikuj potrzebne części. Dodaj „@echo off” jako górny wiersz, zapisz go i uruchom.

WireGuy
źródło
Dostałem ten odnośnik do strony ze starego doktoratu w tym: dostips.com/DosCommandIndex.htm ; To niesamowite, co możesz zrobić z (dobrym?) Starym DOS!
nik
16

Inna opcja: Massive File Renamer

Pozwala łatwo zmienić nazwę wielu plików i rozszerzeń plików . To bardzo szybkie i proste!

Dla zaawansowanych użytkowników i programistów możliwe jest użycie wyrażeń regularnych .

Zobacz to w akcji:

wprowadź opis zdjęcia tutaj

IvanRF
źródło
1
Przy okazji, jak możemy go wybrać, aby otworzyć wszystkie pliki w podfolderach? Mam folder główny z około 50 podfolderami (rekurencyjnie) i wieloma plikami w nich zawartymi.
Pacerier,
1
@Pacerier Myślę, że selektor plików Java nie pozwala na to. Wpadłem na pomysł, aby zezwolić na wybór folderu i można włączyć wyszukiwanie rekurencyjne. Zanotuję to i dodam w przyszłej wersji!
IvanRF
13

Używam narzędzia do wielokrotnej zmiany nazwy Total Commander (ctrl + M) do takich rzeczy. Ich użyteczne narzędzie, jedno z zbyt wielu, by je policzyć, jest łatwe w użyciu, aw razie potrzeby może również wykorzystywać wyrażenia regularne i szablony. Aha, i oczywiście daje podgląd przed wprowadzeniem jakichkolwiek zmian.

To jest trzecie lub czwarte pytanie, na które odpowiedziałem, polecając Total Commander ... Powinienem dostać od nich prowizję ;-)

Yuval
źródło
11

Narzędziem, z którego jestem zadowolony, jest ReNamer . Obsługuje również zapisywanie reguł zmiany nazw, co było dla mnie przydatne, ponieważ wiele razy robię te same zmiany nazw.

Poniżej znajduje się przykład usuwania tekstu przed pierwszym myślnikiem, ale istnieje wiele innych reguł, które możesz zdefiniować.

wprowadź opis zdjęcia tutaj

Esko Luontola
źródło
5

Użyłem Free Commander Portable (darmowego oprogramowania), aby uzyskać dobry efekt:

  1. Wybierz lub przejdź do plików lub katalogów, których nazwy chcesz zmienić
  2. Naciśnij [Ctrl-M] (lub Plik> Wiele nazw)
  3. wypełnij pola w zależności od okoliczności
  4. sprawdź, czy podgląd pokazuje, czego oczekujesz
  5. Iść!
matowe wilkie
źródło
4

Dla zaawansowanych użytkowników i programistów polecam RegexRenamer .

Zrzut ekranu RegexRenamer

Pro's:

  • Bardzo prosty interfejs użytkownika;
  • Wyrażenia regularne, które znają programiści;
  • GPLv2;

Cons:

  • To nie jest linia poleceń! :)
bytebuster
źródło
Nie można uruchomić rekurencyjnie dla wszystkich podfolderów wybranego folderu!
Luckylooke,
3

Oto rozwiązanie wiersza polecenia --- program Java, który napisałem specjalnie, aby ułatwić pracę z „wzorami” w nazwach plików. Jest darmowy i open source, więc możesz go zmodyfikować:

RenameWand
http://renamewand.sourceforge.net/

Kilka odpowiednich przykładów użycia:

Upuść wszystko przed "-"nazwą pliku:

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

Podaj 3-cyfrowy numer do nazwy pliku, sortując według czasu ostatniej modyfikacji:

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

Zmień kolejność części nazwy pliku i zmień wielkość liter:

java -jar RenameWand.jar  "<album> - <artist> - <song>.<ext>" 
                          "<artist.upper> <album.title> - <song>.<ext.lower>"
Zach Scrivena
źródło
3

RenPhoric odkryłem około miesiąc temu. Wspaniały. I to za darmo .

Brak skomplikowanego interfejsu i szybko mogłem zmienić nazwę dokładnie tak, jak chciałem. Możliwość wyrażenia regularnego. Od tamtej pory nie korzystałem już z niczego.

Umber Ferrule
źródło
2

Lubię WildRename Cyloga . Jest potężny, ale łatwy w użyciu i ma wiele funkcji:

  1. szybki
  2. manipulacja sznurkiem
  3. liczniki
  4. symbole wieloznaczne
  5. wyrażenia regularne
  6. podstawienie
  7. konwersja wielkości liter
  8. wycięcie lasu
  9. symulacja (pokaż wyniki bez ich faktycznego zastosowania)

wprowadź opis zdjęcia tutaj

Synetech
źródło
2

Podobnie jak powyżej @zdan, zrobiłem to za pomocą wiersza poleceń (używając „cmd.exe” w systemie Windows). Zajęło mi to trochę majsterkowania w moim konkretnym przypadku, ale trochę badań to rozwiązało.

Jak Ždáň, ja wysyła listy do pliku TXT, następnie wykorzystane tokensi delimszmieniać nazwy plików odpowiednio. W moim przypadku zacząłem od listy plików o takich nazwach:

name-01-02-2012.csv

Chciałem, aby część daty pliku była w kolejności r / m / d, z częścią „nazwa” na końcu, aby brzmiała następująco:

2012-01-02-name.csv

Aby zrobić to masowo, użyłem następującego kodu. Pamiętaj, że robiąc to w ten sposób, WSZYSTKIE części nazwy pliku są uwzględniane, w tym rozszerzenie „.csv”. To mnie podnieciło za pierwszym razem.

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

tokensto „części” nazwy pliku, delimssą to separatory. Zauważ, że w moim przypadku miałem 2 ograniczniki (kreska i kropka).

Osobiście nie dbam o aplikację „Bulk Rename”. Jak wspomnieli inni, GUI jest okropne i niezbyt intuicyjne. Przy odrobinie badań i prostym kodowaniu można to zrobić szybko i sprawnie.

gtr1971
źródło
2

Zabawna nazwa i narzędzie wiersza poleceń bardzo potężne, bardzo szybkie i niezwykle łatwe w użyciu. „Znajdź i zamień tekst” FART http://fart-it.sourceforge.net/ DZIAŁA WIELKO! może również zmieniać nazwy słów w plikach txt.

STOSOWANIE

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
SLM
źródło
Więcej informacji? Czy zmienia nazwy plików ?
vonbrand
Tak, -fopcja, zgodnie z listą.
user1016274
2

Skrypt do wielokrotnej zmiany nazwy jest otwartą alternatywą dla narzędzia Total Commanders Multi Rename, którą można prowadzić za pomocą skryptu. Może używać wtyczek TC do informacji o metadanych.

https://code.google.com/p/multi-rename-script/ http://multi-rename-script.googlecode.com/svn/trunk/docs/res/MRS.PNG

majkinetor
źródło
2
@echo wyłączone
setlocal włączony opóźniony rozwój
ustaw X = 5
ustaw FOLDER_PATH =.
pushd% FOLDER_PATH%
dla %% f w (*) zrobić, jeśli %% f neq% ~ nx0 (
    ustaw „filename = %% ~ nf”
    ustaw "nazwa_pliku =! nazwa_pliku: ~% X%!"
    ren "%% f" "! nazwa pliku! %% ~ xf"
)
popd

zapisz to w pliku wsadowym i uruchom

bbm123
źródło
To dobrze, ale jak mogę uczynić X zmienną (przekazać jako parametr)?
Kangkan
@Kangkan lubi to:set /p "X=Enter the value for X: "
Kidquick
1

Używam Blackboard do zarządzania kursami na uniwersytecie. Kiedy masowo pobieram zadanie (w Blackboard, kliknij górę kolumny oceniania, a następnie „pobierz plik zadania” Blackboard dodaje kilka dodatkowych rzeczy do nazwy pliku - często sprawia, że ​​nazwa pliku jest zbyt długa, aby była ważna w systemie Windows.

Oto jak wyglądają:

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

I tego chciałem

studentname.docx

Wykorzystałem więc podejście zalecane przez @zdan i @ gtr1971, otwierając okno poleceń na folderze z plikami w środku (CMD.EXE). Następnie uruchom to polecenie, aby umieścić wszystkie nazwy plików w dokumencie.

dir /b >filelist.txt

Edytuj dokument i usuń nazwy folderów itp.

Użyj tego polecenia, aby zastąpić dodaną nazwę pliku tablicy tylko nazwą użytkownika i rozszerzeniem pliku.

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

Mam nadzieję, że pomoże to również komuś innemu.

Webmentorman
źródło
1

Opracowałem hybrydowe narzędzie wiersza polecenia JScript / batch o nazwie JREN.BAT, które może zmieniać nazwy plików lub folderów, wykonując wyszukiwanie wyrażeń regularnych i zastępując nazwy. Jest to czysty skrypt, który będzie działał natywnie na dowolnym komputerze z systemem Windows od XP. Pełna dokumentacja jest osadzona w skrypcie.

Zakładając, że JREN.BAT znajduje się w twoim bieżącym katalogu lub jeszcze lepiej, gdzieś na twojej ścieżce, wtedy zadanie zmiany nazwy staje się trywialne.

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

lub

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

Istnieje wiele opcji, w tym /Sopcja, która rekurencyjnie wykonuje zmianę nazwy w podkatalogach.

dbenham
źródło
0

Jeśli potrzebujesz poważnej mocy i chcesz wydać pieniądze ... PowerGrep jest jednym z najpotężniejszych i wszechstronnych narzędzi na rynku ... możesz zmienić nazwę prawie wszystkiego dzięki PowerGrep ... nawet wyszukiwanie binarne i zamiana ... stworzył go RegEx Guru, Jan Goyvaerts .

wprowadź opis zdjęcia tutaj

Eddie B.
źródło
To narzędzie jest niesamowicie drogie ...
Wizard79
Możesz używać go bez końca w nieskończoność ... jednak warto ... Używam go cały czas.
Eddie B,