BAT - поиск строк с переменной

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by alpotemkin, 23 Jun 2010.

  1. alpotemkin

    alpotemkin Elder - Старейшина

    Joined:
    7 May 2008
    Messages:
    57
    Likes Received:
    1
    Reputations:
    0
    Доброго времени суток!

    Условия: Есть папка, в которой находится около 500 html-файлов.
    В этих файлах есть ссылки вида:'/documents/upload.php/xxxxx', где xxxxx - имена файлов.

    Задача:
    1. Просмотреть все html-файлы
    2. Найти все ссылки '/documents/upload.php/xxxxx'
    3. Эти ссылки записать в отдельный текстовый файл

    Вопрос: Как написать батник, чтобы он искал все нужные ссылки, подставляя вместо xxxxx прописанные имена файлов?

    Заранее спасибо за ответ.
     
  2. M_script

    M_script Members of Antichat

    Joined:
    4 Nov 2004
    Messages:
    2,582
    Likes Received:
    1,310
    Reputations:
    1,557
    Нужен именно батник? Или результат?
     
  3. alpotemkin

    alpotemkin Elder - Старейшина

    Joined:
    7 May 2008
    Messages:
    57
    Likes Received:
    1
    Reputations:
    0
    Результат, конечно. :) А есть другие варианты? Ибо под линуксом мне предлагали на shell сделать, но у меня винда.
     
  4. M_script

    M_script Members of Antichat

    Joined:
    4 Nov 2004
    Messages:
    2,582
    Likes Received:
    1,310
    Reputations:
    1,557
    С++ Builder
    PHP:
    TSearchRec sr;
    TStringListFileList = new TStringList;
    TStringListTempList = new TStringList;
    TFileStreamfsOut = new TFileStream("out.txt"fmCreate);
    String sText;
    String sLink;

    if(!
    FindFirst("my_dir\\*.html"faAnyFilesr))
    {
        do
        {
            if(
    sr.Name != "." && sr.Name != "..")
                
    FileList->Add("my_dir\\" sr.Name);
        }
        while(!
    FindNext(sr));
        
    FindClose(sr);
    }


    for(
    int i 0FileList->Count; ++i)
    {
        
    TempList->LoadFromFile(FileList->Strings[i]);
        
    sText TempList->Text;
        while(
    sText.Pos("/documents/upload.php/"))
        {
            
    sText.Delete(1sText.Pos("/documents/upload.php/") + 22 1);
            
    sLink sText;
            
    sLink.SetLength(sLink.Pos("'") - 1);
            
    sLink "/documents/upload.php/" +
                    
    sLink +
                    
    "\n";
            
    fsOut->Write(&sLink[1], sLink.Length());
        }
    }
    delete FileList;
    delete TempList;
    delete fsOut;
     
    1 person likes this.
  5. alpotemkin

    alpotemkin Elder - Старейшина

    Joined:
    7 May 2008
    Messages:
    57
    Likes Received:
    1
    Reputations:
    0
    Спасибо большое за скрипт! Но если бы вы еще объяснили, как его запускать... :confused:
     
  6. Thenno

    Thenno Member

    Joined:
    3 Jul 2009
    Messages:
    77
    Likes Received:
    21
    Reputations:
    0
    Это не скрипт, это код на языке С++ :)

    Запускать так: загружаем С++ Builder с http://www.embarcadero.com/ru/products/cbuilder (там есть триальная, если я не ошибаюсь), запускаем, вставляем код, компилируем, копируем появившийся файл из папки билдера в ту, где куча хтмл'ых файлов, запускаем. Хотя на самом деле, человеку не знакомому с программированием это будет не так просто, но выполнимо, я думаю)
     
    1 person likes this.