2013-04-26 7 views
5

Ich versuche, ein Windows-Programm AMDIS aus R genannt rufen mit dem Anrufeine ausführbare Windows-Datei in R mit Kommandozeilenoptionen Laufe

system("C:/NIST08/AMDIS32/AMDIS_32.exe /S C:/Users/Ento/Documents/GCMS/test_cataglyphis_iberica/queens/CI23_Q_120828_01.CDF") 

um eine Analyse durchzuführen (spezifizierte die /S mit wechseln) auf eine Datei namens CI23_Q_120828_01.CDF, aber es scheint, dass egal, was ich versuche, die Datei nicht korrekt geladen wird, vermutlich weil die Optionen nicht weitergegeben werden. Hat jemand eine Ahnung, was ich falsch machen könnte?

Gerade jetzt diesen Befehl entweder

  1. nichts tut,
  2. macht AMDIS Pop-up, aber es wird nicht geladen, die Datei I
  3. angeben gibt mir den Fehler

    Warnmeldung:

laufenden Befehl 'C: /NIST08/AMDIS32/AMDIS_32.exe/S C: /Users/Ento/Documents/GCMS/test_cataglyphis_iberica/queens/CI23_Q_120828_01.CDF' hatte Status 65535

(ich habe keine Ahnung, was in diesen unterschiedlichen Ergebnissen des gleichen Befehls führt)

(die Befehlszeilenoptionen AMDIS sind 8)

Cheers,
Tom

auf der Seite here beschrieben

EDIT:
Found it vs Schrägstriche mit nach vorn zu tun hatte - laufen

system("C:\\NIST08\\AMDIS32\\AMDIS_32.EXE C:\\Users\\Ento\\Documents\\GCMS\\test_cataglyphis_iberica\\queens\\CI23_Q_120828_01.CDF /S /E") 

scheint zu funktionieren - ich danke Ihnen allen für die Anregungen!

+2

sagen Sie '/ S' aber'/s' in Ihren Anruf haben. Wenn Sie ein Terminal öffnen und Ihren Befehl eingeben, funktioniert es? – flodel

+0

änderte es in/S, aber immer noch kein Glück leider –

+0

aber Hauptfrage ist, wie kann ich Kommandozeilenoptionen richtig übergeben? –

Antwort

7

Sie haben von bquote gehört, noquote, sQuote, dQuote, quoteenquote und Quotes, gut shQuote jetzt treffen !!! :-)

Dieser kleine Funktionsaufruf funktioniert, um eine Zeichenfolge zu formatieren, die an eine Betriebssystemshell übergeben wird. Persönlich finde ich, dass ich in Backslash entkommen kann Hölle entkommen, und shQuote rettet mich. Geben Sie einfach die Zeichenfolge wie in der Befehlszeile Ihrer Wahl ('sh' für Unix alikes wie bash, csh für die C-Shell und 'cmd' für die Windows-Shell) mit shQuote und es wird es für einen Anruf von R mit System formatieren :

shQuote("C:/NIST08/AMDIS32/AMDIS_32.exe /S C:/Users/Ento/Documents/GCMS/test_cataglyphis_iberica/queens/CI23_Q_120828_01.CDF" , type = "cmd") 
#[1] "\"C:/NIST08/AMDIS32/AMDIS_32.exe /S C:/Users/Ento/Documents/GCMS/test_cataglyphis_iberica/queens/CI23_Q_120828_01.CDF\"" 

Allgemeiner können Sie shQuote wie folgt verwenden:

system(shQuote("mystring" , type = c("cmd","sh")) , ...) 
+0

hmm immer noch kein Glück, es scheint, dass in der Eingabeaufforderung in Windows C: \ NIST08 \ AMDIS32 \ AMDIS32 $ .EXE C: \ Benutzer \ Ento \ Dokumente \ GCMS \ test_cataglyphis_iberica \ queens \ CI23_Q_120828_01.CDF/S/E funktioniert OK , aber ich scheine nicht in der Lage zu sein, das in R zu machen ... Ich denke, es muss etwas mit Vorwärts- und Rückwärtsstrichen machen. Irgendwelche Gedanken? –

+0

Meine erste wäre, funktioniert es wie erwartet, tippen Sie es direkt in die Befehlszeile ein? Wenn das mein zweiter Gedanke wäre, hat das etwas mit Genehmigungen zu tun? Versuchen Sie, R mit Administratorrechten auszuführen (Rechtsklick ... Eigenschaften ... Sicherheit ... ausführen als ... oder etwas vage Ähnliches), um zu sehen, ob das hilft. Die Schrägstriche, die Sie in R sehen, werden als Backslashes an die Befehlszeile übergeben, so dass dies nicht das Problem ist. –

+0

Ja C: \ NIST08 \ AMDIS32 \ AMDIS32 $ .EXE C: \ Benutzer \ Ento \ Dokumente \ GCMS \ test_cataglyphis_iberica \ queens \ CI23_Q_120828_01.CD F/S/E direkt in der Windows-Eingabeaufforderung eingegeben funktioniert OK. Auch mit Administratorrechten versucht, aber immer noch kein Glück. Wenn ich R string eingeben = shQuote ("C: /NIST08/AMDIS32/AMDIS32$.EXE C: /Users/Ento/Documents/GCMS/test_cataglyphis_iberica/queens/CI23_Q_120828_01.CDF/S/E", geben Sie = "cmd" ein) system (string) passiert einfach nichts ... –