|
Sorting/Rename files - подскажите!?
Интернет казино
Онлайн игры
Купить DVD
Другие сайты
- Сабж звучит довольно глупо, но я в тупике.
Есть много папок в каждой больше тысячи файлов, с именами вида 1.jpg, 2.jpg, 3.jpg, 100.jpg,....... 1000.jpg. Проблема заключается в том что винда их видит по порядку номерации(так как нужно), а вот тот же Арлес или ACDsee видит в следующем порядке 1.jpg, 10.jpg, 100.jpg, 101.jpg,...... 109.jpg, 11.jpg, 110.jpg и т.д. Т.е. без нулей впереди правельная последовательность теряется. Если пробовать переименовывать виндой то она ренеймит видом x(1).jpg, x(2).jpg, x(3).jpg, ..... что собственно ничего не меняет, другие же проги к примеру AutoRen изначально сортируют для себя как тот же Арлес, соответственно переименовать в правильном порядке не выходит
Вот собственно и вопрос - подскажите прогу или как это всё переименовать!??
- В Windows Commander попробуй. Выдели файлы которые хочешь переименовать и CTRL-T.
- Дело в том что в WC, TC, FARe и т.п. сортировка идёт так же, т.е. 1, 10, 100... так что переименовать(добавить вперед "000") в правильной последовательности не представляется возможным. Нужна какаето софтина чтобы отобразила последовательность как винда (1, 2, 3, ... 100), и после чтобы она могла переименовать с видом 001, 002, 003 ...
Не ужели никто не сталкивался с подобной проблемой!??
Подскажите, буду благодарен!
- А ты сделай в несколько приемов, в том же autoren скажем. Вот держи алгоритм:
1. По маске ?.* добавляешь слева 000
2. По маске ??.* добавляешь слева 00
3. По маске ???.* добавляешь слева же 0
4. Ну и все собственно.. Дальше переименовываешь уже как тебе надо..
Годится способ?
-
imho такую софтину минут за 10 можно на чем угодно набацать...
- Kodek. Спасиб, хоть и геморный не много способ но сгодится, что-то я стормозил и сам до него не додумался, а ударился в поиск какой ни-ть софтины.
Cyberxxx. То что на том же пхп можно за 10 мин. написать это и ежу понятно, вот только мне нужно было локально.
-
Так я и говорю про локально. Берешь любой транлятор, что под рукой окажется и кодишь. В чем проблема-то? Лично я всегда для подобных дел пишу маленькие утилитки.
- ну так напиши и выложи, авось не одному человеку пригодится..
можешь продать за 10 баксов - я куплю. Думаю, топикстартер тоже купит и еще некоторые, которые с такой хуней мучаются..
-
Нажми кнопку sort -> name а потом переименовывай
-
Серьезно? Тебе 10wmz не жалко?
- случаи разные бывают
порой люди готовы выложить деньги за всякую хуйню, которая им нужна в какой-то определенный момент времени, и не думают о последствиях.
к слову о написать - я лучше ее сам выложу фор фри.
кому надо будет - скачают.
адрес дам в этот же топик.
теперь главное - написать
- Вот, собственно, моя софтина:
http://www.maturedesign.com/junk/REN000.exe
В командной строке ей нужно передать путь к подкаталогу с файлами, например, так:
REN000.exe C:/MyLovelyBabes/set001/
После этого, все файлы в подкаталоге C:/MyLovelyBabes/set001/ будут переименованы (имена будут дополнены нулями до 8 символов), т.е. 1.jpg превратиться в 00000001.jpg, 453.jpg превратиться в 00000453.jpg и т.д.
P.S. Номер wmz дать?
- Ну вот.. даже спасибо никто не сказал...
-
Спасибо!
а на каком языке писал?
можешь исходник выложить?
-
Да без проблем Наслаждайся:
Code:
uses Dos, Strings;
type
PStringList = ^TStringList;
TStringList = record
next: PStringList;
prev: PStringList;
Text: String;
end;
TStringObj = object
private
Path: String;
head: PStringList;
StringList: PStringList;
public
procedure Init;
procedure InsertStr(Text: String);
procedure ParseDir;
procedure RenameFiles;
end;
function AddZeros(s: String): String;
begin
if Length(s) < 12 then
result := Dup_CI('0', 12 - Length(s)) + s
else
result := s;
end;
procedure TStringObj.Init;
begin
StringList := nil;
end;
procedure TStringObj.InsertStr(Text: String);
var
elem: PStringList;
begin
New(elem);
if StringList = nil then
head := elem
else
StringList^.next := elem;
elem^.next := nil;
elem^.prev := StringList;
StringList := elem;
StringList^.Text := Text;
end;
procedure TStringObj.RenameFiles;
var
elem: PStringList;
f: File;
begin
elem := head;
while elem <> nil do
begin
Assign(f, Path + elem^.Text);
Rename(f, Path + AddZeros(elem^.Text));
elem := elem^.next;
end;
end;
procedure TStringObj.ParseDir;
var
DirSearchRec: SearchRec;
begin
FindFirst(Path + '*.*', AnyFile, DirSearchRec);
while DosError = 0 do begin
if (DirSearchRec.Name <> '.') and (DirSearchRec.Name <> '..') and
((DirSearchRec.Attr and Directory) = 0)
then begin
InsertStr(DirSearchRec.Name);
end;
FindNext(DirSearchRec);
end;
end;
var
Files: TStringObj;
begin
Files.Init;
if ParamCount = 1 then
begin
if (ParamStr(1) <> '\') then
Files.Path := ParamStr(1) + '\'
else
Files.Path := ParamStr(1);
Files.ParseDir;
Files.RenameFiles;
end else
begin
Writeln;
Writeln('REN000 by MatureDesign.com');
Writeln(' Usage: REN000 <path>');
Writeln;
end;
end.
Платный хостинг
Создание и раскрутка сайтов
Увеличение члена
|