Thủ thuật đổi tên file hàng loạt với Renamer

lys

Active Member
Dưới đây là một thủ thuật nhỏ tặng các bác có yêu cầu đổi tên hàng loạt các bài nhạc theo một tiêu chuẩn chung để dùng trên computer hoặc thiết bị di động.

Mình hay đặt tên bài nhạc theo thứ tự như sau: Số thứ tự (2 số) Tên bài nhạc (chữ thường) – Tên ca sĩ (chữ hoa). Cụ thể như tên các bài nhạc dưới đây:

A04. Ngoc Lan - Nghe Nhung Tan Phai.wav
A05. Vu Khanh - Thang Gieng Va Anh.wav
B02. Ngoc Lan - Tinh Dau.wav
B03. Le Hang - Mot Doi Yeu Anh.wav

thành
01 Nghe nhung tan phai - Ngoc Lan.wav
02 Thang gieng va anh - Vu Khanh.wav
03 Tinh dau - Ngoc Lan.wav
04 Mot doi yeu anh - Le Hang.wav

hoặc
01 Yeu Em (Vu Tuan Duc) - Tuan Ngoc.flac
03 Ru Ta Ngam Ngui (Trinh Cong Son) - Tuan Ngoc.flac
04 Chieu Noi Tru Bang Khuang (Nguyen Trung Cang) - Tuan Ngoc.flac

thành
01 Yeu em (Vu Tuan Duc) - Tuan Ngoc.flac
03 Ru ta ngam ngui (Trinh Cong Son) - Tuan Ngoc.flac
04 Chieu noi tru bang khuang (Nguyen Trung Cang) - Tuan Ngoc.flac

Mình dùng dùng module PascalScript trong chương trình ReNamer

15080572516_1c968abe6b_o.jpg


với một vài dòng code đơn giản như sau:

Đổi vị trí giữa tên ca sĩ và tên bài nhạc
var
SplittedFileName1: TStringsArray;
i,j: Integer;
ws1, ws2: WideString;

begin

SplittedFileName1 := WideSplitString(WideExtractBaseName(FileName), ' - ');
if Length(SplittedFileName1) = 2 then

begin
i:= WidePos(' ', FileName);
j:= WidePos('-', FileName);
ws1 := WideCopy(FileName, 0, i);
ws2 := WideCopy(FileName, i+1, j-i-2);
FileName := ws1 + SplittedFileName1[1] + ' - ' + ws2 + WideExtractFileExt(FileName);
end

end.


Đổi tên bài nhạc thành chữ thường, chỉ giữ ký tự đầu tiên là chữ in hoa:
var
i,j: Integer;
wsOriginal, wsEdited: WideString;

begin
i:= WidePos(' ', FileName);
j:= WidePos('-', FileName);

if j=0 then j:= Length(FileName)-1;

i:= i+2;
j:= j-i+1;
wsOriginal := WideCopy(FileName, i, j);
wsEdited := WideLowerCase(wsOriginal);
FileName := WideReplaceStr(FileName, wsOriginal, wsEdited);

end.

Chúc các bác thành công!
 

ronduong

Well-Known Member
Ðề: Thủ thuật đổi tên file hàng loạt với Renamer

để làm thử xem sao:-?
 

0203

New Member
Ðề: Thủ thuật đổi tên file hàng loạt với Renamer

Trước e cũng đc bác Kenny74can hướng dẫn 1 số việc, nay thêm các thủ thuật của bác nữa, rất có giá trị, kiểu j cũng có lúc dùng. Thanks!
 
Ðề: Thủ thuật đổi tên file hàng loạt với Renamer

Bài viết bạn khó hiểu quá. Cho hỏi đây là PM riêng hay nằm trong Win. Bạn có thể hướng dẫn chi tiết giúp
 

lys

Active Member
Ðề: Thủ thuật đổi tên file hàng loạt với Renamer

Đây là phần mềm riêng, có link ở trên đó. Bác cứ tải chương trình về dùng sẽ hiểu ngay thôi.
Các chức năng căn bản đối với một phần mềm đổi tên đều có đủ. Chỉ riêng cái Pascal Script là độc đáo hơn các phần mềm cùng loại khác, nó cho phép tùy biến nhiều hơn. Hai đoạn code ở trên là để làm hai việc chuyển đổi trước sau và chữ hoa/chữ thường theo ý riêng của người viết code.
 
Chỉnh sửa lần cuối:

tusontay

Huyền Thoại
Em muốn thay đổi như sau:
Ban đầu:
1 Như Quynh - Hoa Trinh Nu
Thành
01 - Nhu Quynh - Hoa trinh nu
Thay đổi:
- Thêm số 0 cho những STT chỉ có 1 ký tự.
- Thêm dấu gạch ngang (-) giữa STT & phần text.
- Sau phần gạch ngang chỉ viết hoa chữ cái đầu tiên.

Có mod đc ko bác? :)
 
Chỉnh sửa lần cuối:

lys

Active Member
Theo yêu cầu của bác:
var
SplittedFileName1: TStringsArray;
i, j: Integer;
ws1, ws2: WideString;
wsNum, wsCasi, wsBH, wsEdited, wsOriginal: WideString;

begin
SplittedFileName1 := WideSplitString(WideExtractBaseName(FileName), '-');
If Length(SplittedFileName1) = 2 then
begin
//thêm số không
//thêm dấu gạch ngang giữa số và tên ca sĩ.
i := WidePos(' ', FileName);
ws1 := WideCopy(FileName, 0, i-1);
wsNum := ws1 + ' - ';
If Length(ws1) = 1 then
wsNum := '0' + ws1 + ' - ';

//lấy tên ca sĩ
j := WidePos('-', FileName);
wsCasi := WideCopy(FileName, i+1, j-i-2);

//lấy tên bài hát
//biến hoa thành thường
wsBH := SplittedFileName1[1];
wsOriginal := WideCopy(wsBH, 3, Length(wsBH)-1);
wsEdited := WideLowerCase(wsOriginal);
wsBH := WideReplaceStr(wsBH, wsOriginal, wsEdited);

FileName := wsNum + wsCasi + ' -' + wsBH + WideExtractFileExt(FileName);
end
end.
 
Bên trên