Требуется хелп по ренеймилке. В общем, такая ситуация - нужна какая-то тулза, батник или скрипт, который могут решить следующую проблему. Есть 2 каталога с файлами. Нужно взять из первого каталога первый файл по алфавиту и скопировать с перезаписью во второй каталог, дав ему имя первого по алфавиту файла из второго каталога. Повторять, пока не кончатся файлы в любом из каталогов. В общем, в конечном итоге во втором каталоге должны оказаться файлы из первого каталога, но с теми именами, что были изначально в 1-ом каталоге.
Re: Требуется хелп по ренеймилке. Разовая операция? Кроме FAR'а, умеющего копировать/перемещать прямоугольные блоки, ничего не надо. Нее, еще два раза dir запустить.
Re: Требуется хелп по ренеймилке. Не разовая. Такая фигня постоянно нужна. Есть каталог с эталонными файлами, они меняться не будут. Их надо раскопировать с другими именами. А как в фаре подобное копирование сделать?
Re: Требуется хелп по ренеймилке. Получить списки файлов "dir /b /on > fname" затем в скопипастить блоками в фаровый же редактор, собирая баник типа "copy /y src dst". Под винду проще прогу написать, чем скриптами.
Re: Требуется хелп по ренеймилке. Спасибо. Да, блочное копирование с дальнейшим формированием батника дало хоть какое-то преимущество по сравнению с ручным перекидыванием. Но буду думать и о программке.
Re: Требуется хелп по ренеймилке. А я, в свою очередь, не понял, что это ты написал, и куда это вставлять В общем, смотри скриншот (правда, уже после осуществлённого копирования, поэтому файлы левого и правого каталогов идентичны). У меня моя звукорежиссёрская задачка. Есть мои эталонные индикаторные звуки, имеющие цифровые имена. Нужно ими подменить звуки в той или иной игре. Потом, при запуске игры, эти индикаторные звуки мне будут наглядно показывать, что и в какой момент запускается звуковым движком игры.
Re: Требуется хелп по ренеймилке. На, сделал тебе тулзу. http://www.rgreat.ru/tmp/AlphabeticFileCopy.exe Лови и радуйся. Code: program AlphabeticFileCopy; {$APPTYPE CONSOLE} uses SysUtils, Math, Windows; type TStrArray = array of string; function GetFileList(Dir, Mask: String): TStrArray; var Res : TSearchRec; n : integer; begin n:=0; if FindFirst(Dir+Mask,faAnyFile,Res)=0 then begin Repeat if (Res.Name<>'.') and (Res.Name<>'..') then begin inc(n); SetLength(Result,n); Result[n-1]:=Res.Name; end; Until FindNext(Res)<>0; end; end; var i,n : integer; Src : string; Dst : string; Err : boolean; SList : TStrArray; DList : TStrArray; begin try if ParamCount<>2 then begin Writeln('AlphabeticFileCopy'); Writeln('Usage:'); Writeln('AlphabeticFileCopy.exe SourceDir DestinationDir'); Exit; end; Src:=IncludeTrailingPathDelimiter(ParamStr(1)); Dst:=IncludeTrailingPathDelimiter(ParamStr(2)); Err:=False; if not DirectoryExists(Src) then begin Writeln('Error: Source directory does not exists!'); Err:=True; end; if not DirectoryExists(Dst) then begin Writeln('Error: Destination directory does not exists!'); Err:=True; end; if Err then begin Writeln('Exiting.'); Exit; end; SList:=GetFileList(Src,'*.*'); DList:=GetFileList(Dst,'*.*'); if Length(SList)=0 then begin Writeln('Error: Source directory is empty!'); Err:=True; end; if Length(DList)=0 then begin Writeln('Error: Destination directory is empty!'); Err:=True; end; if Err then begin Writeln('Exiting.'); Exit; end; n:=min(Length(SList),Length(DList)); Writeln('SourceDir: '+Src); Writeln('DestinationDir: '+Dst); Writeln('Copying '+IntToStr(n)+' files...'); for i:=0 to n-1 do begin if CopyFile(PChar(Src+SList[i]),PChar(Dst+DList[i]),False) then begin Writeln(SList[i]+' -> '+DList[i]+'... OK'); end else begin Writeln(SList[i]+' -> '+DList[i]+'... Failed!'); Writeln(GetLastError); end; end; Writeln('Done!'); except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; end.
Re: Требуется хелп по ренеймилке. Шарман.... паскалисты-дельфисты еще живы? Вместе с "ритуальной точкой в конце программы"?
Re: Требуется хелп по ренеймилке. Сортировку по имени ещё надо. 2Сонар: а надо ли? До сих пор есть несчастные, которые на fox'е пишут или под dos, поддерживая древний но очень нужный софт.
Re: Требуется хелп по ренеймилке. Оно по идее автоматом сортирует.... хотя, проверь сонар. У меня на тестах было сортировано, но может и просто повезло.
Re: Требуется хелп по ренеймилке. А вот вторая версия сортирует как-то не так. У меня первому файлу 2-го каталога присвоился 9-ый файл первого, и дальше тоже всё не так. Первая - чётко работала.
Re: Требуется хелп по ренеймилке. И всё же. Имхо без сортировки работает из-за того что, порядок создания файлов и алфавитный совпадают.