Automatyczne usuwanie i przenoszenie plików [Gothic] 5701 2

O temacie

Autor Adanos

Zaczęty 11.02.2010 roku

Wyświetleń 5701

Odpowiedzi 2

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja

Adanos
Administrator

Automatyczne usuwanie i przenoszenie plików [Gothic]
2010-02-11, 20:33(Ostatnia zmiana: 2010-02-11, 20:34)
Poniżej zamieszczam program źródłowy, który może ułatwić niektórym życie, jeśli dość często robi paczki z modem do Gothica, tak jak ja :P

Co robi program? Program ma za zadanie zastąpić stare pliki GOTHIC.DAT, OUINFO.INF, OU.BIN i OU.CSL z katalogu zlote_wrota* nowymi utworzonymi przez Spacera (a także usunąć te nowe po skopiowaniu). Dodatkowo usuwa plik zw_test.mod, a także uruchamia się automatycznie program GothicVDFS.

UWAGA!!! Jeśli ktoś będzie chciał go używać, to niech dopasuje ów program do własnej struktury katalogowej!
UWAGA!!! Nie ponoszę odpowiedzialności za ewentualne szkody spowodowane z niewłaściwą obsługą programu!


Jak uruchomić program? Najpierw należy uruchomić jakieś środowisko programistyczne np. Code::Blocks. Następnie klikasz File -> New -> Empty file i wklejasz kod programu, edytujesz go, aby dopasować do własnej struktury katalogowej i zapisujesz pod nazwą np. got_zw.c. A teraz wciskasz klawisz F9 i jeśli nie popełniłeś nigdzie błędów przy edycji, to program się skompiluje. Program wykonywalny zostaje utworzony w tym samym katalogu, w którym zapisałeś kod źródłowy. Teraz za każdym razem, kiedy będziesz chciał skorzystać z programu wystarczy, jak dwukrotnie klikniesz na plik got_zw.exe

*oczywiście można zmienić katalog na np. mojmod

Kod źródłowy:
// *****************************************************************************
// *** Usuwanie i kopiowanie plików   ***
// *****************************************************************************
// *****************************************************************************
// *** Autor: Adanos ***
// *** Nazwa programu: got_zw.c  ***
// *** Wersja: 2010-02-11 ***
// *** Język: C  ***
// *** Napisano w: Code::Blocks 8.02 ***
// *****************************************************************************
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

int main()
{

char *sciezka1 = "G:\\Program Files\\JoWood\\Gothic II\\zlote_wrota\\_WORK\\DATA\\SCRIPTS\\Content\\Cutscene\\OU.BIN",
*sciezka2 = "G:\\Program Files\\JoWood\\Gothic II\\zlote_wrota\\_WORK\\DATA\\SCRIPTS\\Content\\Cutscene\\OU.CSL",

*sciezka3 = "G:\\Program Files\\JoWood\\Gothic II\\zlote_wrota\\_WORK\\DATA\\SCRIPTS\\_COMPILED\\GOTHIC.DAT",
*sciezka4 = "G:\\Program Files\\JoWood\\Gothic II\\zlote_wrota\\_WORK\\DATA\\SCRIPTS\\_COMPILED\\OUINFO.INF",

/* wyżej katalog zlote_wrota, niżej standardowy Gothic II: NK*/

*sciezka5 = "G:\\Program Files\\JoWood\\Gothic II\\_Work\\data\\Scripts\\_compiled\\GOTHIC.DAT",
*sciezka6 = "G:\\Program Files\\JoWood\\Gothic II\\_Work\\data\\Scripts\\_compiled\\OUINFO.INF",

*sciezka7 = "G:\\Program Files\\JoWood\\Gothic II\\_Work\\data\\Scripts\\Content\\Cutscene\\OU.BIN",
*sciezka8 = "G:\\Program Files\\JoWood\\Gothic II\\_Work\\data\\Scripts\\Content\\Cutscene\\OU.CSL",

/*paczka z modem*/

*sciezka9 = "G:\\Program Files\\JoWood\\Gothic II\\Data\\modvdf\\zw_test.mod",

/*Gothic VDFS*/
*sciezka10 = "G:\\Program Files\\JoWood\\Gothic II\\_Work\\Tools\\VDFS\\GothicVDFS.exe";

   DeleteFile(sciezka1);
   DeleteFile(sciezka2);

   DeleteFile(sciezka3);
   DeleteFile(sciezka4);

   CopyFile(sciezka5, sciezka3, 1);
   CopyFile(sciezka6, sciezka4, 1);

   CopyFile(sciezka7, sciezka1, 1);
   CopyFile(sciezka8, sciezka2, 1);

   DeleteFile(sciezka5);
   DeleteFile(sciezka6);

   DeleteFile(sciezka7);
   DeleteFile(sciezka8);

   DeleteFile(sciezka9);

   ShellExecute(NULL, "open", sciezka10, "", "", 0); //uruchamia GothicVDFS

   //while(1);

   //return 0;
}

Jeśli ktoś ma jakieś pytanie, to niech pisze.

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Zanim cokolwiek zrobicie, przeczytajcie post od początku do końca, aby nie było problemów. W razie wątpliwości pytać.

Poprawiłem swój programik o możliwość zmieniania katalogów za pomocą pliku *.ini.

UWAGA!!! NIE PONOSZĘ ŻADNEJ ODPOWIEDZIALNOŚCI ZA UŻYTKOWANIE PROGRAMU. KORZYSTANIE Z PROGRAMU NA WŁASNĄ ODPOWIEDZIALNOŚĆ. PROGRAM GŁÓWNIE KOPIUJE I USUWA PLIKI.

UWAGA2!!! WSZYSTKIE ZAMIESZCZONE TU PROGRAMY TO PROGRAMY KONSOLOWE.

No, po małym wstępie, czyli zastraszeniu :D  odnośnik do programu (a także źródło programu i przykładowy plik konfig.ini): http://www.sendspace.com/file/byt5vo

Program nie ma prawa nic złego zrobić, jeśli w pliku konfig.ini dostanie poprawne dane.

Co robi program? Program ma za zadanie zastąpić stare pliki GOTHIC.DAT, OUINFO.INF, OU.BIN i OU.CSL z katalogu zlote_wrota* nowymi utworzonymi przez Spacera (a także usunąć te nowe po skopiowaniu). Dodatkowo usuwa plik zw_test.mod, a także uruchamia się automatycznie program GothicVDFS.

*oczywiście można zmienić katalog na np. mojmod

Jak napisać taki program w języku C? Lepiej nie pisać, tylko użyć plików wsadowych :lol:  

Pliki wsadowe: http://www.sendspace.com/file/emtvem

Działanie właściwie takie same, jak w programie napisanym w C.

@echo off
REM usuwanie plików z katalogu naszego moda
DEL "F:\Program Files\JoWood\Gothic II\zlote_wrota\_WORK\DATA\SCRIPTS\Content\Cutscene\OU.BIN"
DEL "F:\Program Files\JoWood\Gothic II\zlote_wrota\_WORK\DATA\SCRIPTS\Content\Cutscene\OU.CSL"
DEL "F:\Program Files\JoWood\Gothic II\zlote_wrota\_WORK\DATA\SCRIPTS\_COMPILED\GOTHIC.DAT"
DEL "F:\Program Files\JoWood\Gothic II\zlote_wrota\_WORK\DATA\SCRIPTS\_COMPILED\OUINFO.INF"
REM kopiowanie plików z katalogu głównego Gothica do katalogu naszego moda
COPY  "F:\Program Files\JoWood\Gothic II\_Work\data\Scripts\_compiled\GOTHIC.DAT" "F:\Program Files\JoWood\Gothic II\zlote_wrota\_WORK\DATA\SCRIPTS\_COMPILED\GOTHIC.DAT"
COPY  "F:\Program Files\JoWood\Gothic II\_Work\data\Scripts\_compiled\OUINFO.INF" "F:\Program Files\JoWood\Gothic II\zlote_wrota\_WORK\DATA\SCRIPTS\_COMPILED\OUINFO.INF"
COPY  "F:\Program Files\JoWood\Gothic II\_Work\data\Scripts\Content\Cutscene\OU.BIN" "F:\Program Files\JoWood\Gothic II\zlote_wrota\_WORK\DATA\SCRIPTS\Content\Cutscene\OU.BIN"
COPY  "F:\Program Files\JoWood\Gothic II\_Work\data\Scripts\Content\Cutscene\OU.CSL" "F:\Program Files\JoWood\Gothic II\zlote_wrota\_WORK\DATA\SCRIPTS\Content\Cutscene\OU.CSL"
REM usuwanie plików z katalogu głównego moda i paczki z modem
DEL "F:\Program Files\JoWood\Gothic II\_Work\data\Scripts\_compiled\GOTHIC.DAT"
DEL "F:\Program Files\JoWood\Gothic II\_Work\data\Scripts\_compiled\OUINFO.INF"
DEL "F:\Program Files\JoWood\Gothic II\_Work\data\Scripts\Content\Cutscene\OU.BIN"
DEL "F:\Program Files\JoWood\Gothic II\_Work\data\Scripts\Content\Cutscene\OU.CSL"
DEL "F:\Program Files\JoWood\Gothic II\Data\modvdf\zw_test.mod"
REM uruchamianie GothicVDFS
start "F:\Program Files\JoWood\Gothic II\_Work\tools\VDFS\GothicVDFS.exe" .\start.vm
exit
W pliku wsadowym należy ręcznie dostosować nazwy katalogów do swoich. Plik start.vm odpowiada za to, aby przekazać parametry do programu GothicVDFS. Wtedy wystarczy kliknąć build volume, aby utworzyć paczkę z modem :)  

Możliwe że Windows będzie się pytał przez jaki program uruchomić start.vm. Należy wtedy wybrać program GothicVDFS.

Jeśli ktoś jest ciekaw, jak takie coś napisać w C:
// *****************************************************************************
// ***                 Autor: Adanos                                         ***
// ***                 Nazwa programu: Ułatwiacz                             ***
// ***                 Nazwa pliku: got_zw.c                                 ***
// ***                 Wersja: 2010-07-17                                    ***
// ***                 Język: C                                              ***
// ***                 Napisano w: Code::Blocks 8.02                         ***
// *****************************************************************************
// *****************************************************************************
// ***                Usuwanie i kopiowanie plików                           ***
// *****************************************************************************
// *****************************************************************************
// *** Głównym zadaniem programu jest pobranie odpowiednich wartośći z pliku ***
// *** konfig.ini i wykonaniu operacji kopiowania, usuwania i otwarcia plików***
// *** w celu automatyzacji czynności związanych z tworzeniem "paczek"       ***
// *** z modami do jednej z dwóch pierwszych części gry Gothic.              ***
// *****************************************************************************

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

FILE *fp; //zmienna globalna

char* czytaj_wiersz(char tablica[])
{
   char c;
   int i = 0;
   int k = 0;

   c = getc(fp);

   for (i=1; i<1000 && (c = (char)getc(fp))!=EOF && c!='\n';i++)
   {
      tablica[i] = c;
   }

   tablica[i] = '\0'; //zakańcza tablicę znaków

   if (tablica != "")
      while ((int)tablica[k++] != 61); //pomiń znak, dopóki nie napotkasz znaku równości
   //else tablica = "pusta";

   i = k;

   while ((int)tablica[i++] == 32) //usuń wszystkie zbędne spacje od indeksu k tablicy
      k++;

   while ((int)tablica[i++] != '\0') //zamień komentarz na białe znaki, a raczej usuń z tablicy
   {
      if ((int)tablica[i] == 47)
         tablica[i] = '\0';
   }

   return &tablica[k];
}

int main()
{
   char c;

   int j = 0;

   char t[1000];
   char t2[1000];
   char t3[1000];
   char t4[1000];
   char t5[1000];
   char t6[1000];
   char t7[1000];
   char t8[1000];
   char t9[1000];
   char t10[1000];
   char t11[1000];
   char t12[1000];

   char *help[10];

   help[0] = t;   //katalog naszego moda, plik OU.BIN
   help[1] = t2;  //katalog naszego moda, plik OU.CSL
   help[2] = t3;  //katalog naszego moda, plik GOTHIC.DAT
   help[3] = t4;  //katalog naszego moda, plik OUINFO.INF
   help[4] = t5;  //katalog Gothica, plik GOTHIC.DAT
   help[5] = t6;  //katalog Gothica, plik OUINFO.INF
   help[6] = t7;  //katalog Gothica, plik OU.BIN
   help[7] = t8;  //katalog Gothica, plik OU.CSL
   help[8] = t9;  //paczka z modem
   help[9] = t10; //GothicVDFS
   //help[10] = t11;
   //help[11] = t12;

   char *sciezka[10];

   fp = fopen("konfig.ini","r");   //otwarcie pliku konfig.ini
   
   /*
   czyta wiersze dopóki nie przypisze tablicy sciezka wszystkich (niepustych) wartości lub do napotkania końca pliku
   */
   
   while ((j<10) && (c = (char)getc(fp))!=EOF)
   {
      sciezka[j] = czytaj_wiersz(help[j]);

      j++;
   }

   fclose(fp); //zamyka plik konfig.ini

   /*for (int i = 0; i<j; i++)
   {
      printf("%s \n", sciezka[i]);
      printf("------------------- \n");
   }*/

   //printf("Dlugosc=%d",strlen(sciezka[0]));
   
   DeleteFile(sciezka[0]);   //katalog naszego moda, plik OU.BIN - usuwanie
   DeleteFile(sciezka[1]);   //katalog naszego moda, plik OU.CSL - usuwanie

   DeleteFile(sciezka[2]);   //katalog naszego moda, plik GOTHIC.DAT - usuwanie
   DeleteFile(sciezka[3]);   //katalog naszego moda, plik OUINFO.INF - usuwanie

   CopyFile(sciezka[4], sciezka[2], 1);   //kopiowanie Gothic.dat z katalogu Gothica do katalogu moda
   CopyFile(sciezka[5], sciezka[3], 1);   //kopiowanie Gothic.dat z katalogu Gothica do katalogu moda

   CopyFile(sciezka[6], sciezka[0], 1);   //kopiowanie OU.BIN z katalogu Gothica do katalogu moda
   CopyFile(sciezka[7], sciezka[1], 1);   //kopiowanie OU.CSL z katalogu Gothica do katalogu moda

   
   
   DeleteFile(sciezka[4]); //katalog Gothica, plik GOTHIC.DAT -usuwanie
   DeleteFile(sciezka[5]); //katalog Gothica, plik OUINFO.INF -usuwanie

   DeleteFile(sciezka[6]); //katalog Gothica, plik OU.BIN -usuwanie
   DeleteFile(sciezka[7]); //katalog Gothica, plik OU.CSL -usuwanie

   DeleteFile(sciezka[8]); //paczka z modem -usuwanie

   ShellExecute(NULL, "open", sciezka[9], "", "", 0); //uruchamia GothicVDFS

   return 0;
}

Możliwe że nie jest idealny, ale inaczej nie umiałem napisać.

Kilka uwag do programu napisanego w języku C:
- w pliku konfig.ini mogą być tylko jednowierszowe odstępy
- komentarz może być tylko na końcu niepustego wiersza, komentarz to dwie ukośne kreski // w komentarzu nie może wystąpić znak nowego wiersza, czyli ENTER, stąd tylko komentarze jednowierszowe
- program konsolowy, uruchamiasz, wykonuje się i włącza się GothicVDFS
- i chyba tyle uwag, jak sobie coś przypomnę, to dopiszę ;)

Jeśli macie jakieś pytania, sugestie, komentarze, to piszcie śmiało ;)

jesterret

jesterret

Użytkownicy
posty44
Propsy47
  • Użytkownicy
Dzięki za program. Na pewno się przyda.:D


0 użytkowników i 1 Gość przegląda ten wątek.
0 użytkowników
Do góry