Câu trả lời:
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 .
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.
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 -WhatIf
tham số trên Rename-Item
để kiểm tra tên trước khi bạn phát hành chú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ố.
-replace
có 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.
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.
for /f "tokens=1,2,3" %i in ('dir /B') DO ren "%i %j %l" %l
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):
Miễn phí cho sử dụng cá nhân và thương mại.
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ó.
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:
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ọ ;-)
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.
Tôi đã sử dụng Free Commander Portable (phần mềm miễn phí) để có hiệu quả tốt:
Đối với người dùng và nhà phát triển nâng cao, tôi sẽ đề xuất RegexRenamer .
Chuyên nghiệp:
Con:
Cách dễ nhất là sử dụng Rename Master .
Đâ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>"
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ừ đó.
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 tokens
và delims
đổ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, delims
là 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.
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.
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
-f
tùy chọn, như được liệt kê.
Tập lệnh đổi tên nhiều là một thay thế nguồn mở cho công cụ Total Commanders Multi Rename mà bạn có thể lái xe thông qua tập lệnh. Nó có thể sử dụng plugin TC cho thông tin siêu dữ liệu.
@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
set /p "X=Enter the value for X: "
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.
Đây là một chương trình đơn giản khác có tên là Trình thay đổi thuộc tính tệp mà bạn có thể sử dụng để đổi tên tệp. Đây là một chương trình di động, vì vậy bạn có thể mang nó trên ổ USB.
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 /S
tùy chọn thực hiện đệ quy việc đổi tên trên các thư mục con.
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 .