Cách đổi tên 80.000 tệp cùng một lúc trong Windows


8

Tôi đã có 80.000 tệp trong một thư mục và tôi cần đổi tên tất cả chúng từ

filename.jpg

đến

._filename.jpg

Trong môi trường Windows, tôi đoán từ dos. Lý do là tôi đã nén các tệp này thành tar.gz từ unix và sao chép vào windows và vì một số lý do tên tệp đã thay đổi.

Bạn có thể cho tôi biết lệnh để làm điều đó là gì? cảm ơn

Câu trả lời:


3

Bạn có thể sử dụng lệnh tích hợp renamehoặcren :

ren *.jpg ._*.jpg

Mặc dù, như với tất cả những điều này, hãy thử nó trên một thư mục chỉ chứa một vài tệp.


1
Tôi thích cách tiếp cận của bạn, nhưng tôi có 2 vấn đề: (1) các chữ cái đầu tiên của tên tệp được thay thế. Nói cách khác, "._" không được thêm vào lúc đầu nhưng nó thay thế cho 2 chữ cái đầu tiên. (2) "._" thực sự không hoạt động. Nếu tôi sử dụng, ví dụ "__" thì nó hoạt động. Tôi nghĩ rằng dấu chấm, "." đưa ra một số vấn đề
aneuryzm

@Patrick - Tôi phải thừa nhận rằng tôi đã không có cơ hội kiểm tra đầy đủ điều này, và vâng tôi nghĩ bạn đã đúng về vấn đề gây ra dấu chấm.
ChrisF

Điều này là không chính xác và nó không phải là do các dấu chấm. renchỉ có thể thay thế văn bản bằng văn bản có cùng độ dài. Ví dụ: nếu bạn có tệp file1.txtfile2.txt, ren file*.txt blah*.txtthực hiện những gì bạn mong đợi (bây giờ bạn có tệp blah1.txtblah2.txt). Tuy nhiên, nếu sau đó bạn gõ ren blah*.txt myfile*.txtlệnh bom ra vì nó đổi tên blah1.txtthành myfile.txt(không myfile1.txt) và sau đó không thể đổi tên blah2.txtthành myfile.txtvì tệp đó đã tồn tại.
David Richerby

15

Đây là một cách sử dụng PowerShell:

Điều hướng đến thư mục của bạn và chạy lệnh này

Get-ChildItem *.jpg | Rename-Item -newname {"._" + $_.Name}

Phiên bản thưởng thêm ngắn:

gci *.jpg | ren -newname {"._" + $_.Name}

6

Tôi có 2 giải pháp:

  1. Tất cả các tệp trong cùng một thư mục

    • chạy lệnh sau từ dấu nhắc lệnh trên thư mục đó:

      for /f "delims=¯" %i in ('dir /b /on') do ren "%i" "._%i"
      
  2. giải pháp hoàn chỉnh khi có tệp trong thư mục con VÀ khi bạn muốn thay thế các ký tự đầu tiên "n" bằng chuỗi bạn muốn: D

    • tạo một tệp bó với lệnh sau
    • thay đổi các tham số biến thành những gì bạn muốn
      • path: đặt bên trong ""đường dẫn gốc của các tệp của bạn (ví dụ: "C: \ Documents and settings \ user \ desktop \ new thư mục"
      • numfirstchars2replace: đặt một số có các ký tự đầu tiên để thay thế (trong trường hợp của bạn, 2)
      • str2put: đặt một chuỗi được thêm làm tiền tố của tên tệp mới (trong trường hợp của bạn, ._)
    • chạy nó trong một thư mục khác với nơi chứa các tập tin


@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

đã kiểm tra đầy đủ :) nó giải quyết vấn đề của bạn, bao gồm cả một số thông số kỹ thuật bạn đưa ra trong nhận xét @ChrisF. lưu ý: trong "delims = ¯", nếu "" được sử dụng trong tên tệp, hãy thay đổi "" với một ký tự khác mà bạn biết không được sử dụng trong tên tệp
kokbira

đã bỏ phiếu vì kịch bản dài vô cùng của bạn để chỉ thực hiện một vòng lặp và đổi tên sth. :)
wullxz

tốt, công bằng, tôi có thể tạo một vòng lặp "for / f" với tất cả các tệp được sắp xếp theo tên và sau đó đổi tên chúng thành "._lenameX.jpg" với X là số thứ tự, nhưng tôi nghĩ theo cách để làm điều đó cho các trường hợp khác - nếu trong tương lai xuất hiện một vấn đề tương tự, ai đó có thể sửa đổi một số lệnh ...
kokbira

bạn có thể sử dụng "delims =" thay vì "delims = ¯" (Tôi quên rằng: D). ngoài ra, bạn có thể sử dụng cho / f intead của for / f "delims =" bởi vì nó thực hiện những gì tôi muốn trong trường hợp đó ...
kokbira

3

Nếu tất cả chúng đều nằm trong cùng một thư mục, bạn có thể chọn tất cả chúng bằng Control+ Avà sau đó nhấn F2để đổi tên một trong số chúng. Tất cả các tệp tiếp theo sẽ được đặt tên tệp (2), tệp (3), v.v.


3

Hãy thử Powershell (được cài đặt sẵn trong Windows 7):

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

(đã thử nó trong phần tải xuống của tôi.)

Chỉnh sửa : Mã của Siim K sẽ thêm ".jpg" vào mỗi "._filename.jpg". Xóa ".jpg" cuối cùng trong mã của Siim K và bạn có một mã ngắn, thanh lịch để đổi tên các tệp của mình.


cảm ơn, cập nhật Mã được sử dụng lại từ một lệnh đổi tên tương tự đòi hỏi thao tác mở rộng và không nhận thấy.
Siim K


0

Tôi luôn thấy Flash Renamer là một công cụ tốt để đổi tên các tệp theo đợt.

Nó có phiên bản dùng thử và đầy đủ ($ 20) và có thể đổi tên các tệp dựa trên dữ liệu meta - rất hữu ích để đổi tên các tệp MP3 mà tôi sử dụng hầu hết.


0

Nếu bạn đang tìm kiếm một cách đổi tên hàng loạt thân thiện với người dùng, bạn có thể dùng thử công cụ miễn phí Ant Renamer , có một danh sách lớn các hành động bạn có thể thực hiện và nó cũng đưa ra một bản xem trước tiện dụng trước khi bạn thực hiện đổi tên. Tôi sử dụng nó rất nhiều khi làm hỏng thư viện nhạc, ảnh hoặc video của tôi.


0

Tôi đã sử dụng chương trình File Renamer phần mềm miễn phí này với kết quả tuyệt vời. Nhiều bộ lọc và tùy chọn khác nhau, cộng với nó cung cấp cho bạn khả năng kiểm tra kết quả. Một giao diện người dùng lỗi thời có lẽ nhưng hoạt động như một nhà vô địch.

http://www.webxpace.com/software/freeware.shtml#FileRenamer

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.