Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

odpalanie programu(java) w skrypcie w C

dzasma 08 Mar 2011 11:13 1436 12
  • #1 08 Mar 2011 11:13
    dzasma
    Poziom 8  

    Mam program w javie ktory dla kazdego pliku inputowego zwraca jeden output. Problem polega na tym, ze inputow jest ok 900, a ja nie chciałabym stracic kilku dni na trzymanie 900 outputow. Program ma mozliwosc odpalenia z linii komend. Jesli chcialabym napisac skrypcik w C (bo to jedyny jezyk jakiego sie uczylam), to jakiej funkcji musze uzyc zeby odpalic ten program w tym skrypcie, tak, zeby mogl być wykonany te 900 razy a outputy gromadzily sie w jakims konkretnym miejscu? Wiem ze jest cos takiego jak system(polecenie) ale to chyba dziala tylko dla jednorazowo. Z góry dzieki z jakiekolwiek wskazówki.

    0 12
  • #2 08 Mar 2011 11:44
    arnoldziq
    Moderator Programowanie

    Czytasz listę plików źródłowych i dla każdego wywołujesz system() z odpowiednimi parametrami. To wszystko.

    0
  • #3 08 Mar 2011 12:16
    dzasma
    Poziom 8  

    a czy jako argument funcji system() mogę podać tą komendę, którą wpisałbym w linii poleceń? Czy musi być cała ścieżka do programu?

    0
  • #4 08 Mar 2011 12:54
    arnoldziq
    Moderator Programowanie

    Poleceniem system musisz wywołać taką linię poleceń jaką normalnie wywołujesz, żeby przetworzyć te dane.
    Uruchom pojedyncze przetwarzanie z poziomu linii poleceń i zobaczysz, czy potrzebujesz dodawać całą ścieżkę czy nie. Ale na 99% musisz podać wszystkie ścieżki.

    0
  • #5 08 Mar 2011 14:13
    dzasma
    Poziom 8  

    Hm... jakis pomsyl czemu to nie dziala?:

    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    Proszę pamiętać o używaniu znaczników code lub syntax. - arnoldziq

    Dodano po 6 [minuty]:

    Dodam,ze to polecenie:
    java Protein ścieżka_dostepu\nazwa_pliku.pdb nazwa_pliku.out atom serial name altLoc resName chainID resSeq iCode x y z occupancy tempFactor element charge phi psi p log
    wykonuje program jesli znajduje sie w folderze:C:\\hp\Documents\programy\Protein

    0
  • #6 08 Mar 2011 14:33
    antekone
    Poziom 16  

    Po pierwsze skasuj #using namespace;, po drugie każdy znak backslash (\) należy escape'ować do postaci \\, gdy chce się go użyć w stringu ;), po trzecie: czy rzeczywiście masz taki plik: c:\hp\documents\programy\protein\java.exe ?

    0
  • #7 08 Mar 2011 14:45
    pallid
    Poziom 20  

    Nie wygodniej bedzie po prostu zrobic *.bat?

    Kod: bash
    Zaloguj się, aby zobaczyć kod

    0
  • #8 08 Mar 2011 16:50
    dzasma
    Poziom 8  

    nie mam aplikacji java exe, aplikacja nazywa sie ProteinCalculator, ale tak to sie odpala z linii poleceń dla konkretnych plików(o nazwie zmienna[i]).. Wiec co innego moge tam wpisac?

    Nie za bardzo wiem co roci ten *.bat? Mozesz napisac cos wiecej?

    0
  • #9 08 Mar 2011 17:34
    pallid
    Poziom 20  

    dzasma napisał:

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    Nie za bardzo wiem co roci ten *.bat? Mozesz napisac cos wiecej?


    Najprosciej bedzie to po prostu uruchomic.

    Jesli zamienisz (*.*) na sciezke do Twoich plikow wejsciowych, a echo %%f na wywolanie Swojego programu ProteinCalculator (w taki sposob, jak to robisz z linii polecen), wstawiajac %%f w miejsce zmienna[ i ], powinienes otrzymac mniej wiecej to, czego potrzebujesz.

    PS: w przypadku podania pelnej sciezki do katalogu, nazwe plikow (z rozszerzeniem) mozna wyodrebnic w taki sposob: %~nxf

    0
  • #10 08 Mar 2011 19:06
    dzasma
    Poziom 8  

    Najprosciej bedzie to po prostu uruchomic.

    Ale normalnie w konsoli to wpisac czy jak skrypt?
    Bo jesli napisze tak:

    @echo off
    for %%f in C:\\Users\hp\Dokumenty\chaperony do java %%f.pdb.gz %%f.out atom serial name altLoc resName chainID resSeq iCode x y z occupancy tempFactor element charge phi psi p log

    to nie chodzi.
    Czy echo tutaj @echo off
    nie powinnam zastapic poleceniem?

    0
  • #11 08 Mar 2011 19:48
    pallid
    Poziom 20  

    Przede wszystkim zajrzyj do jakiegos tutoriala do plikow wsadowych DOS, celem wprowadzenia.

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    Wyjasnienie co poniektorych rzeczy:

    echo off - komenda, ktora wylacza wyswietlanie wywolywanych komend na konsoli. Znak @ na poczatku mowi, ze sama komenda tez ma "pozostac bez echa" na wyjsciu.

    for %zmienna in (zbior) do instrukcja - petla, ktora dla kazdego elementu ze zbioru zbior wykonuje instrukcje. Aktualny element jest przechowywany w zmienna. Znak % to odwolanie do tej zmiennej. W przypadku skryptow uruchamianych z pliku *.bat, konieczne jest uzycie podwojnego %%.

    (*.*) - zbior wszystkich plikow w biezacym katalogu. Jesli chcesz zbior plikow z rozszerzeniem (np. *.dll) w konkretnym katalogu, to np.: (C:\Windows\*.dll).

    %~nxzmienna - wyswietlenie nazwy pliku oraz rozszerzenia (bez pelnej sciezki dostepu)

    %~nzmienna - wyswietlenie samej nazwy pliku (bez sciezki i rozszerzenia)

    To powinno w zupelnosci wystarczyc.

    0
  • #12 08 Mar 2011 19:55
    dzasma
    Poziom 8  

    Dziekuje, tylko powiedz mi prosze jak mam to uruchomic :)

    0
  • #13 08 Mar 2011 23:06
    azra
    Poziom 16  

    Miałaś do czynienia z oknem konsoli? Start->Uruchom "cmd", tam przechodzisz do katalogu gdzie jest Twój plik.bat i go uruchamiasz:

    Code:
    plik.bat ewentualne opcje

    0