Требуется хелп по ренеймилке.

Discussion in 'Off Topic' started by sonar-, Jan 12, 2013.

  1. TS
    sonar-

    sonar- Well-Known Member

    Joined:
    Feb 16, 2001
    Messages:
    6,865
    Likes Received:
    1,518
    Требуется хелп по ренеймилке.

    В общем, такая ситуация - нужна какая-то тулза, батник или скрипт, который могут решить следующую проблему.

    Есть 2 каталога с файлами.

    Нужно взять из первого каталога первый файл по алфавиту и скопировать с перезаписью во второй каталог, дав ему имя первого по алфавиту файла из второго каталога. Повторять, пока не кончатся файлы в любом из каталогов.

    В общем, в конечном итоге во втором каталоге должны оказаться файлы из первого каталога, но с теми именами, что были изначально в 1-ом каталоге.
     
  2. Estel

    Estel Well-Known Member

    Joined:
    Feb 16, 2000
    Messages:
    7,305
    Likes Received:
    1,972
    Re: Требуется хелп по ренеймилке.

    Еще скажи что под винду.
     
  3. -andy-

    -andy- Well-Known Member

    Joined:
    Feb 12, 2000
    Messages:
    8,871
    Likes Received:
    602
    Re: Требуется хелп по ренеймилке.

    Разовая операция? Кроме FAR'а, умеющего копировать/перемещать прямоугольные блоки, ничего не надо. Нее, еще два раза dir запустить.
     
  4. TS
    sonar-

    sonar- Well-Known Member

    Joined:
    Feb 16, 2001
    Messages:
    6,865
    Likes Received:
    1,518
    Re: Требуется хелп по ренеймилке.

    Не разовая. Такая фигня постоянно нужна.
    Есть каталог с эталонными файлами, они меняться не будут. Их надо раскопировать с другими именами.

    А как в фаре подобное копирование сделать?
     
    Last edited: Jan 12, 2013
  5. Flk

    Flk Well-Known Member

    Joined:
    Aug 21, 2002
    Messages:
    17,264
    Likes Received:
    7,933
    Re: Требуется хелп по ренеймилке.

    Получить списки файлов "dir /b /on > fname" затем в скопипастить блоками в фаровый же редактор, собирая баник типа "copy /y src dst".

    Под винду проще прогу написать, чем скриптами.
     
    Last edited: Jan 12, 2013
  6. Stefan

    Stefan FH Beta Tester

    Joined:
    Feb 14, 2001
    Messages:
    22,287
    Likes Received:
    6,828
    Re: Требуется хелп по ренеймилке.

    rsynk под винду
     
  7. TS
    sonar-

    sonar- Well-Known Member

    Joined:
    Feb 16, 2001
    Messages:
    6,865
    Likes Received:
    1,518
    Re: Требуется хелп по ренеймилке.

    Спасибо. Да, блочное копирование с дальнейшим формированием батника дало хоть какое-то преимущество по сравнению с ручным перекидыванием. Но буду думать и о программке.
     
  8. mcgru-

    mcgru- Well-Known Member

    Joined:
    Sep 21, 2000
    Messages:
    61,557
    Likes Received:
    7,396
    sepukked
     
    Last edited: Jan 31, 2013
  9. TS
    sonar-

    sonar- Well-Known Member

    Joined:
    Feb 16, 2001
    Messages:
    6,865
    Likes Received:
    1,518
    Re: Требуется хелп по ренеймилке.

    А я, в свою очередь, не понял, что это ты написал, и куда это вставлять :)

    В общем, смотри скриншот (правда, уже после осуществлённого копирования, поэтому файлы левого и правого каталогов идентичны).

    У меня моя звукорежиссёрская задачка.
    Есть мои эталонные индикаторные звуки, имеющие цифровые имена.
    Нужно ими подменить звуки в той или иной игре. Потом, при запуске игры, эти индикаторные звуки мне будут наглядно показывать, что и в какой момент запускается звуковым движком игры.
     

    Attached Files:

  10. Flk

    Flk Well-Known Member

    Joined:
    Aug 21, 2002
    Messages:
    17,264
    Likes Received:
    7,933
    Re: Требуется хелп по ренеймилке.

    Под винду добывать msys и молиться, что заработает? :)
     
  11. rgreat

    rgreat FH Developer

    Joined:
    Jul 19, 2000
    Messages:
    42,560
    Likes Received:
    15,531
    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.
    
     
    Last edited: Jan 12, 2013
  12. -rust-

    -rust- Well-Known Member

    Joined:
    Jan 23, 2000
    Messages:
    5,291
    Likes Received:
    187
    Re: Требуется хелп по ренеймилке.

    Шарман.... паскалисты-дельфисты еще живы?
    Вместе с "ритуальной точкой в конце программы"? :)
     
  13. TS
    sonar-

    sonar- Well-Known Member

    Joined:
    Feb 16, 2001
    Messages:
    6,865
    Likes Received:
    1,518
    Re: Требуется хелп по ренеймилке.

    Вах, спасибо, Рома!
     
  14. Flk

    Flk Well-Known Member

    Joined:
    Aug 21, 2002
    Messages:
    17,264
    Likes Received:
    7,933
    Re: Требуется хелп по ренеймилке.

    Сортировку по имени ещё надо. 2Сонар: а надо ли?
    До сих пор есть несчастные, которые на fox'е пишут или под dos, поддерживая древний но очень нужный софт.
     
    Last edited: Jan 12, 2013
  15. rgreat

    rgreat FH Developer

    Joined:
    Jul 19, 2000
    Messages:
    42,560
    Likes Received:
    15,531
    Re: Требуется хелп по ренеймилке.

    Оно по идее автоматом сортирует.... хотя, проверь сонар.

    У меня на тестах было сортировано, но может и просто повезло.
     
  16. TS
    sonar-

    sonar- Well-Known Member

    Joined:
    Feb 16, 2001
    Messages:
    6,865
    Likes Received:
    1,518
    Re: Требуется хелп по ренеймилке.

    Да, всё нормально, то что нужно!
    :cheers: :zachot: :super:
     
  17. rgreat

    rgreat FH Developer

    Joined:
    Jul 19, 2000
    Messages:
    42,560
    Likes Received:
    15,531
    Re: Требуется хелп по ренеймилке.

    На всякий случай добавил принудительную сортировку и перевыложил.
     
  18. TS
    sonar-

    sonar- Well-Known Member

    Joined:
    Feb 16, 2001
    Messages:
    6,865
    Likes Received:
    1,518
    Re: Требуется хелп по ренеймилке.

    А вот вторая версия сортирует как-то не так.
    У меня первому файлу 2-го каталога присвоился 9-ый файл первого, и дальше тоже всё не так. Первая - чётко работала.
     
  19. badger

    badger FH Beta Tester

    Joined:
    Jul 9, 2000
    Messages:
    5,758
    Likes Received:
    8
    Re: Требуется хелп по ренеймилке.

    Классика принципа "не сломалось - не чини" :D :D
     
  20. Flk

    Flk Well-Known Member

    Joined:
    Aug 21, 2002
    Messages:
    17,264
    Likes Received:
    7,933
    Re: Требуется хелп по ренеймилке.

    И всё же. Имхо без сортировки работает из-за того что, порядок создания файлов и алфавитный совпадают.