tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
2551
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Jacka
    Jacka Jacka ist offline Mitglied Brokat
    Registriert seit
    Sep 2004
    Beiträge
    390
    Hallöchen!

    Ich habe im Internet eine tolle Anleitung für das Erstellen einer MySQL-DB gestützen Online Struktursuche gefunden, die ich gerne mal ausprobieren wollte.
    Alle chemischen Strukturen für die Datnebank müssen in einem bestimmten Format vorliegen (s.g. *.mol Files). Mit Hilfe eines Programmes "Checkmol.exe" werden diese Strukturfiles in einen bestimmten Zahlencode konvertiert, der dann in eine MySQL Datenbank eingetragen werden soll. Checkmol wird über Command line Befehle gesteuert (Checkmol <Option> <Filename>) z.B. so Checkmol -X 00001.mol
    Da man meistens eine sehr große Anzahl an chemischen Struktruren hat (> 100.000), würde das händische Konvertieren und Eintragen in die DB ewig dauern. Daher wurden in dem Beispiel Perl-Skripte benutzt. Mit perl habe ich bis jetzt noch nichts gemacht gehabt, dazu kommt, dass die Beispiele für ein Linux-System ausgelegt sind. Der Perl-Code sieht recht verständlich aus, sodass ich es zumindest schon einmal geschafft habe, das das Skript die DB-Tabellen anlegt, nur funktioniert der Befehlsdurchlauf mit den Command Line Befehlen nicht und er kann dadurch die richtigen Werte nicht eintragen.

    Daher meine Frage:
    Wie führt man cmd.exe aus und übergibt Behfehle?
    Wie bekommt man die Ausgabe wieder in eine Variable?

    Das größte Problem scheinen immer die Programmpfade zu sein, gebe ich diese jedoch ein, bekomme ich Fehlermeldungen.

    Hier mal ein Auschnitt aus dem Original Code:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    use DBI();
    $user = "moldb-admin";
    $password = "topsecret";
     
    $cmd = "#!/bin/sh
    cd /data/htdocs/moldb/molfiles
    for i in [0-9][0-9][0-9][0-9][0-9].mol 
    do
      mol_id=`echo \$i |sed -e s/\.mol//g`
      echo -n \${mol_id}\:
      /usr/local/bin/checkmol -X \$i
    done
    ";
     
    open (INFILE, "$cmd |") || die ("cannot open input file!");
    my $dbh = DBI->connect("DBI:mysql:database=moldb;host=localhost",
                           $user, $password,
                           {'RaiseError' => 1});

    Link zur Anleitung: Uni Wien

    Bin für jeden Hinweis dankbar!

    Viele Grüße,
    Jacka
    Geändert von Jacka (21.10.06 um 13:12 Uhr)
     
    Biologie ist das was lebt, Chemie das was kracht und Physik das, wo nichts funktioniert!

    - - - - - - - - - - - - - - - -

    Open Source JS-Framework für Business Web-Applications: ExtJS

  2. #2
    renee renee ist offline Mitglied Brokat
    Registriert seit
    Jan 2004
    Beiträge
    332
    Ganz so einfach wird das nicht, weil unter Windows einige Programme (z.B. das sed) nicht vorhanden ist.

    Du solltest Dir genauer anschauen was gemacht wird und dann die Funktionalität in Perl nachprogrammieren.

    So wie es für mich aussieht, sollte es ungefähr so gehen:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    #!/usr/bin/perl
     
    use strict;
    use warnings;
     
    # Pfad muss angepasst werden
    my $dir = '/data/htdocs/moldb/molfiles';
     
    # Pfad muss angepasst werden
    my $command = 'C:\Programme\checkmol.exe -X ';
     
    opendir DIR,$dir or die $!;
    my @files = grep{/\.mol$/}readdir DIR;
    closedir DIR;
     
    for my $file(@files){
        my $return = qx{$command $file};
    }
     
    # hier muss noch die Konvertierung hin...
     

  3. #3
    Avatar von Jacka
    Jacka Jacka ist offline Mitglied Brokat
    Registriert seit
    Sep 2004
    Beiträge
    390
    Besten Dank! Es hat funktioniert!

    Viele Grüße,
    Jacka
     
    Biologie ist das was lebt, Chemie das was kracht und Physik das, wo nichts funktioniert!

    - - - - - - - - - - - - - - - -

    Open Source JS-Framework für Business Web-Applications: ExtJS

Ähnliche Themen

  1. MFC Zugriff auf MySQL Command Line Client
    Von mats_MF im Forum VisualStudio & MFC
    Antworten: 0
    Letzter Beitrag: 02.12.08, 21:55
  2. Bash Command Line
    Von higret im Forum Linux & Unix
    Antworten: 3
    Letzter Beitrag: 01.05.06, 23:03
  3. Antworten: 2
    Letzter Beitrag: 11.09.05, 00:57
  4. Command line Tool gesucht
    Von General Töff im Forum Relationale Datenbanksysteme
    Antworten: 8
    Letzter Beitrag: 30.07.05, 12:20
  5. Putty Command Line
    Von margaan im Forum Linux & Unix
    Antworten: 2
    Letzter Beitrag: 28.02.04, 19:00