Avatar billede centauri Nybegynder
06. juni 2000 - 12:43 Der er 8 kommentarer og
1 løsning

Ondøb filer i bibliotek til fortløbende numre

Er der nogen der kan lave et program til mig der kan tage et helt bibliotek med billeder og omdøbe filerne fra 0000.* og op efter. Det drejer sig om en masse billeder der skal ude på en hjemmeside.
Programmet må meget gerne være sådan så man angiver et nummer den skal starte fra, sådan så man kan fortsætte hvis det skal gøres af flere gange. Så skal den også gerne have et 2 parametre til input bibliotek til output bibliotek, så vil det nemmeste vel være at den flytter filerne fra Input bibliotek til output bibliotek og omdøber den fil et fort løbende nummer. det er bare vigtigt at den for at den rigtige extension på bagefter den omdøber den så som .gif , .jpg.
Det må meget gerne være sådan så man bare kan sige at nummerne skal starte med 00000 eller 00000000 alt efter hvor mange billeder man regner med at der vil blive.

Avatar billede kh@ingenioer Nybegynder
08. juni 2000 - 09:21 #1
Det er da vist nærmere en perl ting, du leder efter?
Avatar billede dmk Nybegynder
08. juni 2000 - 09:49 #2
Nej, det kan da fint laves i c++. Vil du have noget source-kode, eller er du simpelthen bare ude efter et færdigt program?

Dette er jo en kategori for hjælp til programmering, og jeg vil meget gerne hjælpe dig med at lave et program der kan det, men det er ikke så meget en kategori for bestillings-arbejde.

Hvis du er intresseret, vil jeg da godt skrive et-eller-andet kode, som kan noget af det ovenstående, og den kan du så selv arbejde videre med.


DMK
Avatar billede centauri Nybegynder
08. juni 2000 - 11:10 #3
>dmk<
Det vil jeg da være meget interreseret i hvis du ville gøre
Avatar billede dmk Nybegynder
08. juni 2000 - 19:50 #4
Okay, here goes! Undskyld det tog lidt tid...

DMK


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#include "windows.h"
#include "stdio.h"
#include "iostream.h"

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bool CopyFile(char* Source, char* Dest)
{
  FILE* fSource;
  FILE* fDest;
  fSource=fopen(Source, "rb");
  if (!fSource) return false;
  fDest=fopen(Dest, "wb");
  if (fDest==NULL) { fclose(fSource); return false; }
  fseek(fSource, 0, SEEK_SET);
  fseek(fDest,  0, SEEK_SET);
  char Buffer[2048];
  int BytesRead=fread(Buffer, 1, 2048,  fSource);
  fwrite(Buffer, 1, BytesRead,  fDest);
  while (BytesRead==2048)
  {
    BytesRead=fread(Buffer, 1, 2048, fSource);
    fwrite(Buffer, 1, BytesRead, fDest);
  } // END while more blocks to read
  fclose(fDest);
  fclose(fSource);
  return true;
} // END boolean function CopyFile

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bool copyfiles(char* SourceDir, char* DestDir, char* Extension, int NumNumbers, int StartNumber)
{
  char Source[3000];
  WIN32_FIND_DATA FindData;
  sprintf(Source, "%s\\*.%s", SourceDir, Extension);
  HANDLE FindHandle=FindFirstFile(Source, &FindData);
  if (FindHandle==INVALID_HANDLE_VALUE)
  {
    printf("unable to find any files\n");
    FindClose(FindHandle);
    return false;
  }
  while (true)
  {
    char Dest[3000];
    char tSource[3000];
    sprintf(tSource, "%s\\%s", SourceDir, FindData.cFileName);
    sprintf(Dest, "%s\\%.*ld.%s", DestDir, NumNumbers, StartNumber, Extension);
    StartNumber++;
    if (!CopyFile(tSource, Dest))
    {
      FindClose(FindHandle);
      return false;
    }
    if (!FindNextFile(FindHandle, &FindData)) break;
  } // END while more files
  FindClose(FindHandle);
  return true;
} // END boolean function copyfiles

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void main()
{
  copyfiles("c:\\temp\\test", "c:\\temp\\test2", "gif", 3, 0);
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Avatar billede centauri Nybegynder
12. juni 2000 - 19:00 #5
Ja det ser jo meget lovende ud men hvad hvsi der bode ligger JPG, GIF, BMP billeder i det bibliotek det er bare forde jeg kan se du bruger GIF i slutningen af følgende sætning.

copyfiles("c:\\temp\\test", "c:\\temp\\test2", "gif", 3, 0);
Avatar billede dmk Nybegynder
14. juni 2000 - 10:25 #6
Grunden til den extension er, at jeg havde forstået det på den måde, at du gerne ville kunne angive en extension, og det så kun var filer med denne extension der blev kopieret? Det betyder selvfølgelig, at hvis du BÅDE vil kopiere .gif og .jpg, så skal der lavet to kald til copyfiles, og så vil du få to sæt af filer i dit destination dir, et sæt med .gif og et andet med .jpg. Var det ikke meningen?

DMK
Avatar billede centauri Nybegynder
15. juni 2000 - 12:20 #7
Nej det var ikke meningen, den skal bare tage dem i alferbetisk orden og så omdøbe dem til et fortløbende nummer, hvad enten det er gif, jpg eller bmp billeder.
Avatar billede dmk Nybegynder
15. juni 2000 - 12:26 #8
Okay, jeg har lige lavet en hurtig ændring. Nu vil du få filerne med fortløbende nummer, hvor du først får alle gif, derefter alle jpg og til sidst alle bmp. Kan det gå?

DMK

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#include "windows.h"
#include "stdio.h"
#include "iostream.h"

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bool CopyFile(char* Source, char* Dest)
{
  FILE* fSource;
  FILE* fDest;
  fSource=fopen(Source, "rb");
  if (!fSource) return false;
  fDest=fopen(Dest, "wb");
  if (fDest==NULL) { fclose(fSource); return false; }
  fseek(fSource, 0, SEEK_SET);
  fseek(fDest,  0, SEEK_SET);
  char Buffer[2048];
  int BytesRead=fread(Buffer, 1, 2048,  fSource);
  fwrite(Buffer, 1, BytesRead,  fDest);
  while (BytesRead==2048)
  {
    BytesRead=fread(Buffer, 1, 2048, fSource);
    fwrite(Buffer, 1, BytesRead, fDest);
  } // END while more blocks to read
  fclose(fDest);
  fclose(fSource);
  return true;
} // END boolean function CopyFile

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bool copyfiles(char* SourceDir, char* DestDir, char* Extension, int NumNumbers, int &StartNumber)
{
  char Source[3000];
  WIN32_FIND_DATA FindData;
  sprintf(Source, "%s\\*.%s", SourceDir, Extension);
  HANDLE FindHandle=FindFirstFile(Source, &FindData);
  if (FindHandle==INVALID_HANDLE_VALUE)
  {
    printf("unable to find any files\n");
    FindClose(FindHandle);
    return false;
  }
  while (true)
  {
    char Dest[3000];
    char tSource[3000];
    sprintf(tSource, "%s\\%s", SourceDir, FindData.cFileName);
    sprintf(Dest, "%s\\%.*ld.%s", DestDir, NumNumbers, StartNumber, Extension);
    StartNumber++;
    if (!CopyFile(tSource, Dest))
    {
      FindClose(FindHandle);
      return false;
    }
    if (!FindNextFile(FindHandle, &FindData)) break;
  } // END while more files
  FindClose(FindHandle);
  return true;
} // END boolean function copyfiles

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void main()
{
  int StartNumber=0;
  copyfiles("c:\\temp\\test", "c:\\temp\\test2", "gif", 3, StartNumber);
  copyfiles("c:\\temp\\test", "c:\\temp\\test2", "jpg", 3, StartNumber);
  copyfiles("c:\\temp\\test", "c:\\temp\\test2", "bmp", 3, StartNumber);
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Avatar billede centauri Nybegynder
16. juni 2000 - 13:57 #9
Mange tak
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester