Làm thế nào tôi có thể đổi tên tập tin?


126

Tôi đã có một loạt các tệp được đặt tên theo mẫu 99 - DescriptiveName.txtvà tôi muốn xóa số đó từ phía trước để tôi có DescriptiveName.txt.

Tôi có thể làm cái này như thế nào? Tôi có thể làm điều đó từ dòng lệnh hoặc có một tiện ích có thể làm điều này không?

Câu trả lời:


94

Tôi biết trong tiêu đề của bạn, bạn nói "in dos" nhưng tôi có ấn tượng rằng bạn chỉ đang tìm cách để làm điều này và tự hỏi liệu đó có phải là cách tốt nhất.

Công cụ tuyệt đối tốt nhất mà tôi đã tìm thấy cho việc này là Tiện ích đổi tên hàng loạt .

Tiện ích đổi tên hàng loạt

Nó không phải là một công cụ dòng lệnh, nhưng chúng có phiên bản dòng lệnh nếu bạn thực sự muốn sử dụng nó theo cách đó.

Tôi đã sử dụng phiên bản GUI rất nhiều và nó rất mạnh, rất nhanh và cực kỳ dễ sử dụng.

Oh, và nó là MIỄN PHÍ cho sử dụng cá nhân.


Thật không may, công cụ này không miễn phí cho mục đích thương mại :(
AntonK

Đó là lý do tại sao tôi nói nó miễn phí cho sử dụng cá nhân.
Jim McKeeth

2
Đây là công cụ siêu nhanh. Nó đã giải quyết vấn đề 6.000 tệp của tôi trong vài giây, bằng cách sử dụng một số logic tìm kiếm và thay thế. Giống như sử dụng Notepad ++ nhưng chỉnh sửa hàng ngàn tệp. Một giải pháp tuyệt vời, cảm ơn!
Đậu phộng

59

Một tập lệnh PowerShell nhỏ:

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

Kết hợp với các biểu thức chính quy phức tạp hơn, điều này có thể trở thành một cái gì đó như:

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

Điều này biến những thứ như '01 - Beginning.mp3 'thành' Beginning - 01.mp3 '.

Sử dụng -WhatIftham số trên Rename-Itemđể kiểm tra tên trước khi bạn phát hành chúng.


1
@sysrqb, vui lòng nghiên cứu thêm một chút.
Joey

Có thay thế không yêu cầu hai biểu thức chuỗi? Cái thứ hai có hai, cái thứ nhất thì không. ... -replace '\d+ - ',''. Ngoài ra, tôi tin rằng cái đầu tiên là tốt hơn, chỉ đơn giản là tước bỏ từ đầu bằng cách sử dụng regex. Mặc dù tôi tin rằng bạn nên bao gồm ^ neo ở đầu biểu thức để nó chỉ khớp với các tên bắt đầu bằng số.
Xalious 8/8/2016

1
@Xalious: Chà, đơn giản là bạn có thể dùng thử. -replacecó thể chỉ có một đối số ở phía bên phải, trong trường hợp đó, đối số thứ hai hoàn toàn là chuỗi rỗng.
Joey

Điều này đã cứu tôi .. Tiện ích đổi tên hàng loạt chỉ gặp sự cố và tôi đã thử rất nhiều giải pháp khác. Đây là cách tốt hơn cho những người thoải mái với regrec. Cảm ơn bạn rất nhiều !!
Inkh Su Tesou

24

Nếu bạn thực sự muốn sử dụng dòng lệnh windows (nếu bạn không muốn tải xuống một cái gì đó), bạn có thể làm như thế này:

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

Dòng đầu tiên xuất danh sách các tệp thành một tệp có tên là fileList.txt. Dòng thứ hai phân tách từng tên trong danh sách thành 3 phần, #, "-" và phần còn lại của tên. Đối với mỗi người trong số đó, lệnh đổi tên.


2
Xóa dòng đầu tiên để đơn giản hóa nó và thực hiện:for /f "tokens=1,2,3" %i in ('dir /B') DO ren "%i %j %l" %l

Tôi biết điều này đã cũ nhưng nó vẫn là một câu trả lời chắc chắn - chỉ có% l (% L) nên là% k (% K) [mã thông báo tăng từ% i (% I) nên tôi, J, K ...]
Donald Byrd

24

AntRenamer giúp dễ dàng xác định mô hình đổi tên; có rất nhiều cái đã được chuẩn bị (và nó đưa ra bản xem trước của các hành động):

AntRenamer

Miễn phí cho sử dụng cá nhân và thương mại.


19

trường cũ:

Bạn có thể thực hiện một DIR và chuyển hướng đầu ra thành một tệp, như trong DIR * .TXT> TEMP.BAT

Sau đó sử dụng trình chỉnh sửa để lấy ra những gì bạn không cần và sửa đổi những phần bạn cần. Thêm một "@echo tắt" làm dòng trên cùng, lưu nó và chạy nó.


Tôi đã nhận được tài liệu tham khảo trang này từ một tiến sĩ trường học cũ trong này: dostips.com/DosCommandIndex.htmlm ; Thật đáng kinh ngạc những gì bạn có thể làm với (cũ?) DOS cũ!
nik

16

Một tùy chọn khác: Massive File Renamer

Nó cho phép dễ dàng đổi tên nhiều tập tin và phần mở rộng tập tin . Nó rất nhanh và đơn giản!

Đối với người dùng và nhà phát triển nâng cao, có thể sử dụng các biểu thức thông thường .

Xem nó trong hành động:

nhập mô tả hình ảnh ở đây


1
Btw làm thế nào chúng ta có thể chọn nó để mở tất cả các tệp trong các thư mục con? Tôi đã có một thư mục gốc với khoảng 50 thư mục con (đệ quy) và nhiều tệp trong đó.
Pacerier

1
@Pacerier Tôi nghĩ rằng trình chọn tệp Java không cho phép điều đó. Tôi đã có ý tưởng cho phép chọn một thư mục và tìm kiếm đệ quy có thể được bao gồm. Tôi sẽ lưu ý điều đó và thêm nó trong một bản phát hành trong tương lai!
IvanRF

13

Tôi sử dụng công cụ đa đổi tên của Total Commander (ctrl + M) cho những thứ như thế này. Công cụ hữu ích của họ, một trong số quá nhiều để đếm, rất dễ sử dụng và cũng có thể sử dụng các biểu thức và mẫu thông thường nếu cần thiết. Ồ, và nó rõ ràng cung cấp cho bạn một bản xem trước trước khi thực hiện bất kỳ thay đổi.

Đây là câu hỏi thứ ba hoặc thứ tư tôi đã trả lời khi giới thiệu Total Commander ... Tôi sẽ nhận được hoa hồng từ họ ;-)


11

Công cụ mà tôi hài lòng là ReNamer . Nó cũng hỗ trợ tiết kiệm các quy tắc đổi tên, rất hữu ích đối với tôi, vì tôi nhiều lần thực hiện các đổi mới tương tự.

Dưới đây là một ví dụ về cách xóa văn bản trước dấu gạch ngang đầu tiên, nhưng có vô số quy tắc khác bạn có thể xác định.

nhập mô tả hình ảnh ở đây


5

Tôi đã sử dụng Free Commander Portable (phần mềm miễn phí) để có hiệu quả tốt:

  1. Chọn hoặc Điều hướng đến các tệp hoặc thư mục để đổi tên
  2. Nhấn [Ctrl-M] (hoặc Tệp> Đổi tên nhiều)
  3. điền vào các trường như có ý nghĩa cho hoàn cảnh của bạn
  4. xác minh bản xem trước cho thấy những gì bạn mong đợi
  5. Đi!

4

Đối với người dùng và nhà phát triển nâng cao, tôi sẽ đề xuất RegexRenamer .

Ảnh chụp màn hình RegexRenamer

Chuyên nghiệp:

  • Giao diện người dùng rất đơn giản;
  • Biểu thức chính quy mà các nhà phát triển quen thuộc;
  • GPLv2;

Con:

  • Nó không phải là một dòng lệnh! :)

Không thể làm cho nó hoạt động đệ quy cho tất cả các thư mục con của thư mục đã chọn!
Luckylooke


3

Đây là một giải pháp dòng lệnh --- một chương trình Java mà tôi đã viết cụ thể để giúp dễ dàng làm việc với "các mẫu" trong tên tệp. Nó là nguồn mở và miễn phí, vì vậy hãy thoải mái sửa đổi nó:

Đổi tênWand
http://renamewand.sourceforge.net/

Một số ví dụ sử dụng có liên quan:

Bỏ mọi thứ trước "-"tên tệp:

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

Chuẩn bị một số có 3 chữ số cho tên tệp, sắp xếp theo thời gian sửa đổi lần cuối:

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

Sắp xếp lại các phần của tên tệp và trường hợp thay đổi:

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

3

Tôi phát hiện ra RenPhoric khoảng một tháng trước. Tuyệt vời. Và nó miễn phí .

Không có giao diện phức tạp và tôi đã nhanh chóng có thể đổi tên chính xác như tôi muốn. Biểu hiện thường xuyên có khả năng. Không sử dụng bất cứ thứ gì khác kể từ đó.


2

Tôi thích WildRename của Cylog . Nó mạnh mẽ, nhưng dễ sử dụng và có nhiều tính năng:

  1. Nhanh
  2. thao tác chuỗi
  3. quầy
  4. ký tự đại diện
  5. biểu thức chính quy
  6. thay thế
  7. chuyển đổi trường hợp
  8. đăng nhập
  9. mô phỏng (hiển thị kết quả mà không thực sự áp dụng chúng)

nhập mô tả hình ảnh ở đây


2

Giống như @zdan ở trên, tôi đã làm điều này bằng dòng lệnh (sử dụng "cmd.exe" trong Windows). Phải mất một số tiếng leng keng cho trường hợp cụ thể của tôi, nhưng một nghiên cứu nhỏ đã giải quyết nó.

Giống như zdan, tôi xuất danh sách thành tệp TXT, sau đó được sử dụng tokensdelimsđổi tên các tệp cho phù hợp. Trong trường hợp của tôi, tôi bắt đầu với một danh sách các tệp có tên như vậy:

name-01-02-2012.csv

Tôi muốn phần ngày của tệp được sắp xếp theo thứ tự y / m / d, với phần "tên" ở cuối để nó sẽ đọc như sau:

2012-01-02-name.csv

Để thực hiện điều này, tôi đã sử dụng đoạn mã sau. Lưu ý rằng khi thực hiện theo cách này, TẤT CẢ các phần của tên tệp được xem xét, bao gồm cả phần mở rộng của ".csv". Điều đó đã làm tôi thất vọng lần đầu tiên.

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

Các tokens"phần" của tên tệp, delimslà các dấu phân cách. Lưu ý rằng trong trường hợp của tôi, tôi có 2 dấu phân cách (dấu gạch ngang và dấu chấm).

Cá nhân tôi không quan tâm đến ứng dụng "Đổi tên hàng loạt". Như những người khác đã đề cập, GUI rất tàn bạo và không trực quan. Với một ít nghiên cứu và mã hóa đơn giản, những điều này có thể được thực hiện rất nhiều một cách hiệu quả và nhanh chóng.


2

Tên và công cụ dòng lệnh hài hước rất mạnh mẽ, rất nhanh và cực kỳ dễ sử dụng. "Tìm và thay thế văn bản" FART http://fart-it.sourceforge.net/ CÔNG TRÌNH TUYỆT VỜI! cũng có thể đổi tên các từ trong tập tin txt.

SỬ DỤNG

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

Một số chi tiết? Nó đổi tên tập tin ?
vonbrand

Có, -ftùy chọn, như được liệt kê.
user1016274


2
@echo tắt
setlocal enableelayed mở rộng
đặt X = 5
đặt FOLDER_PATH =.
đẩy% FOLDER_PATH%
cho %% f trong (*) làm nếu %% f neq% ~ nx0 (
    đặt "tên tệp = %% ~ nf"
    đặt "tên tệp =! tên tệp: ~% X%!"
    đổi tên "%% f" "! tên tệp! %% ~ xf"
)
popd

lưu tệp này trong một tệp bó và chạy


Điều này là tốt, nhưng làm thế nào tôi có thể biến X thành một biến (truyền dưới dạng tham số)?
Kangkan

@Kangkan thích điều này:set /p "X=Enter the value for X: "
Kidquick

1

Tôi sử dụng Blackboard để quản lý các khóa học trong một trường đại học. Khi tôi tải xuống một bài tập hàng loạt (trong Bảng đen, hãy nhấp vào đầu cột chấm điểm, sau đó "tải xuống tệp bài tập" Bảng đen thêm một loạt các nội dung bổ sung vào tên tệp - làm cho tên tệp quá dài không hợp lệ trên Windows.

Đây là những gì họ trông giống như:

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

Và đây là những gì tôi muốn

studentname.docx

Vì vậy, tôi đã sử dụng cách tiếp cận mà @zdan và @ gtr1971 khuyên, bằng cách mở một cửa sổ lệnh trên thư mục chứa các tệp bên trong (CMD.EXE). Sau đó chạy lệnh này để đặt tất cả các tên tệp trong một tài liệu.

dir /b >filelist.txt

Chỉnh sửa tài liệu và xóa tên thư mục, v.v.

Sử dụng lệnh này để thay thế các công cụ tên tệp được thêm vào Blackboard chỉ bằng phần mở rộng tên người dùng và tệp.

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

Hy vọng điều này sẽ giúp người khác là tốt.



1

Tôi đã phát triển một tiện ích dòng lệnh lai JScript / batch có tên là JREN.BAT có thể đổi tên các tệp hoặc thư mục bằng cách thực hiện tìm kiếm biểu thức chính quy và thay thế tên. Đây là tập lệnh thuần túy sẽ chạy tự nhiên trên mọi máy Windows từ XP trở đi. Tài liệu đầy đủ được nhúng trong tập lệnh.

Giả sử JREN.BAT nằm trong thư mục hiện tại của bạn, hoặc tốt hơn là ở đâu đó trong đường dẫn của bạn, thì nhiệm vụ đổi tên của bạn trở nên tầm thường.

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

hoặc là

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

Có nhiều tùy chọn, bao gồm /Stùy chọn thực hiện đệ quy việc đổi tên trên các thư mục con.


0

Nếu bạn cần sức mạnh nghiêm túc và sẵn sàng bỏ tiền ra ... PowerGrep là một trong những công cụ mạnh mẽ và linh hoạt nhất trên thị trường ... bạn có thể đổi tên hầu hết mọi thứ với PowerGrep ... thậm chí là tìm kiếm nhị phân và thay thế ... nó được tạo bởi RegEx Guru, Jan Goyvaerts .

nhập mô tả hình ảnh ở đây


Tiện ích này cực kỳ tốn kém ...
Wizard79 8/8/2015

Bạn có thể sử dụng nó miễn phí vô thời hạn ... tuy nhiên, nó có giá trị ... Tôi sử dụng nó mọi lúc.
Eddie B
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.