01/10/2018, 16:20

Rename file hàng loạt. Thêm số thứ tự vào cuối file cho từng thư mục riêng biệt

Hello
Mình đang cần rename file đánh số thứ tự vào cuối file cho nhiều thư mục. Với điều kiện số thứ tự đếm cho từng thư mục, chứ không đếm dồn. Mình đã thử 1 số công cụ nhưng toàn đánh số theo kiểu cộng dồn số thứ tự ở các thư mục. 1 số công cụ số thứ tự riêng cho từng thư mục thì lại đổi tên của cả thư mục
Vì đây chỉ là 1 công việc nhỏ trong vấn đề đang giải quyết nên ngại viết tool. Bạn nào biết công cụ nào có thể giải quyết vấn đề này không. thấy trên mạng họ viết file bat rất ngắn gọn thực thi qua command prompt. Nhưng mình không biết ngôn ngữ viết file này :3

Thankyou

Văn Dương viết 18:33 ngày 01/10/2018

5 lít có đồ không đụng hàng ::)))

Đùa thôi. Dùng C# mà viết.

Quân viết 18:33 ngày 01/10/2018

Linux thì bash, win thì cmd xử lí ngon vụ này

Tao Không Ngu. viết 18:33 ngày 01/10/2018

Hi HelloWorld.
Đơn giản thì cứ python mà chiến.

viết 18:31 ngày 01/10/2018

dùng powershell nhoé

function Suffix-Numbering($Path) {
  $cwd = pwd
  cd $Path
  $i = 1
  ls -File | %{Rename-Item $_ ('{0}_{1:D3}{2}' -f $_.basename, $i++, $_.extension)}
  ls -Directory | %{Suffix-Numbering $_}
  cd $cwd
}

rồi gọi

suffix-numbering path/to/directory

là được

cái này đơn giản, nếu làm kĩ phải thêm kiểm tra xem có path hay ko: (nếu lỡ quên path thì nó chạy đổi tên toàn bộ file trong folder hiện tại…)

  if (!($Path)) {
    Write-Error "Missing path" -Category InvalidArgument -TargetObject $_
    return
  }
  if (!(Test-Path $Path)) {
    Write-Error "Path not found" -Category ObjectNotFound -TargetObject $_
    return
  }

rồi phải thêm -Recurse để có thể chặn recursive call, -Verbose để in ra những file nào bị đổi tên và đổi thành tên gì, -Filter để lọc bớt ví dụ chỉ đổi tên *.png, alias để khỏi mất công gõ nguyên cái function, -Force để kiểm tra xem file đã có number suffix chưa, có rồi thì đừng đánh số thêm, và có lẽ thêm -NumberFormat để custom đánh số 001 hay 0001 v.v… code chùa thì cho vài dòng đơn giản vậy thôi

HelloWorld viết 18:34 ngày 01/10/2018

Em vừa mới tìm được 1 tool rename file (bản rất cũ, các bản mới của phần mềm này đều rename cộng dồn số thứ tự, tên của nó là rename file luôn)
Như e đã nói trên, vì chỉ là 1 công việc nhỏ, giờ ngồi viết tool ngại mà cũng không dùng nhiều

HelloWorld viết 18:23 ngày 01/10/2018

Rất chi tiết và hữu dụng, tks bạn

HelloWorld viết 18:20 ngày 01/10/2018

Nó chỉ chạy cho thư mục cd $Path
chứ các thư mục con bên trong $Path k rename được là sao nhỉ

viết 18:32 ngày 01/10/2018

có mà, dòng ls -Directory | %{Suffix-Numbering $_} là gọi đệ quy các thư mục con của $Path đó. Code rất đơn giản có 2 dòng thôi mà ko đọc @_@

Đào An viết 18:29 ngày 01/10/2018

Hỏi mất nửa ngày thì ngồi 1 tí viết cái là xong cmnr

HelloWorld viết 18:34 ngày 01/10/2018

:3 Thật ra hỏi xong sau 30 không thấy ai tl nên mình đã tìm ra 1 tool làm được rồi :3 Thấy mấy cái script mấy bác trên để lại, xem xem có dùng được gì thì lưu lại mai mốt cần thôi

Viet Le viết 18:34 ngày 01/10/2018

Giết gà dùng dao mổ trâu thế mệt lắm.

HelloWorld viết 18:31 ngày 01/10/2018

Tks bạn. Mấy cái script này có vẻ hiệu quả

Văn Dương viết 18:31 ngày 01/10/2018

Hì hụi cả ngày cũng đã xong đâu

Ngoài ra có thể dùng VBS để viết script. Ngày trước có con “virus” tự nhân bản nó vào tất cả các thư mục chắc code giống 80%.
Tham khảo ở đây :

Giải Pháp Excel

Cách diệt Virus !!!!!!!.vbs nhanh nhất

Nhờ các thầy và thành viên Gpe chỉ giúp mình cách diệt Virus !!!!!!!.vbs cho nhanh Đơn giản là xoá tất cả các File có phần đuôi là Virus !!!!!!!.vbs Hôm qua máy tính của em có bị nhiễm con Virut này ngồi xoá diệt bằng tay mất hơn 1 tiếng đồng hồ Đặc...

HelloWorld viết 18:35 ngày 01/10/2018

Code trên không biết có vấn đề gì không. Mình rename hơn 20k ảnh, xong có 1 vài ảnh nó tên nó bị nhảy học kiểu
xxx001.jpg
xxx003.jpg

:3 Bạn xem lại hộ mình với. Thử trên 1 vài thư mục với số file ít thì ok, nhưng nhiều quá hơn 20k ảnh nên mình không check hết được :3

viết 18:33 ngày 01/10/2018

chắc trong 20k ảnh đó có ảnh .png, nó quét hết các file types chứ ko chỉ riêng .jpg? Tìm xem file xxx002.??? có hay ko @_@, ví dụ
xxx001.jpg
xxx002.png
xxx003.jpg

nếu chỉ muốn đổi tên file .jpg thì chỗ ls -File thêm ls -File *.jpg vô là được, còn muốn đổi tên hết mà đánh số liên tục cho từng kiểu file thì xài Sort-Object

ls -File | Sort-Object -Property extension,basename | %{Rename-Item $_ ('{0}_{1:D3}{2}' -f $_.basename, $i++, $_.extension)}

nó sẽ đánh số là
xxx001.jpg
xxx002.jpg

xxx122.jpg
xxx123.png
xxx124.png

HelloWorld viết 18:25 ngày 01/10/2018

toàn ảnh jpg hết mà, số ảnh là 152 chẳng hạn thì nó đánh nhảy học 1 số, nên tổng số ảnh lên 153, nhưng mình thử lại thì lại được rồi, k biết có phải khi được khi không không @@

Bài liên quan
0