Autore Topic: Con Shell funziono, con Exec no  (Letto 1207 volte)

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.161
  • Tonno verde
    • Mostra profilo
Con Shell funziono, con Exec no
« il: 08 Agosto 2018, 16:12:06 »
Io di questi comandi ne so poco ma Ujlain mi ha chiesto perché Exec dava errore di "File or directory does not exist"

Io gli ho consigliato di usare Shell che funziona però non capisco il perché shell si e exec no, ecco il codice

Codice: [Seleziona]
Public Sub Button1_Click()

  Dim fname1, fname2, cmd As String

  fName1 = "~/Desktop/a.pdf"
  fName2 = "~/Desktop/a.3gp"
  cmd = Subst$("cp &1  &2", fname1, fname2)
  'Exec [cmd] Wait ''<------------------------------------Questo non funziona
  Shell cmd Wait ''<--------------------------------------Questo funziona, perché?

End
« Ultima modifica: 08 Agosto 2018, 16:12:42 da Gianluigi »
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.371
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Con Shell funziono, con Exec no
« Risposta #1 il: 08 Agosto 2018, 18:11:08 »
Io gli ho consigliato di usare
...ma pperché non usa Copy( )  ?    :-\
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.161
  • Tonno verde
    • Mostra profilo
Re:Con Shell funziono, con Exec no
« Risposta #2 il: 08 Agosto 2018, 18:25:32 »
Io gli ho consigliato di usare
...ma pperché non usa Copy( )  ?    :-\

Credo che voglia convertire dei file mp4 in 3gp usando ffmpeg attraverso i comandi di terminale e si è trovato questo malfunzionamento di Exec su cp e mv e mi ha chiesto conferma.

 :ciao: :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.371
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Con Shell funziono, con Exec no
« Risposta #3 il: 08 Agosto 2018, 18:34:00 »
... e exec no

La domanda è: cosa vuole Exec ?
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.161
  • Tonno verde
    • Mostra profilo
Re:Con Shell funziono, con Exec no
« Risposta #4 il: 08 Agosto 2018, 19:20:18 »
Non capisco cosa vuoi sapere, io questi comandi non li ho mai usati e penso che mai li userò.
Per quel poco che ne so Exec e Shell si equivalgono e quindi...
Se per copiare il comando (Exec) è scritto sbagliato, mi potresti dire come va scritto correttamente?
Ho provato anche passando il risultato a process...

 :ciao: :ciao:
« Ultima modifica: 08 Agosto 2018, 19:20:55 da Gianluigi »
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.371
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Con Shell funziono, con Exec no
« Risposta #5 il: 08 Agosto 2018, 23:13:19 »
Va be'.... facciamola breve  >:(Exec vuole che le parti costituenti di una riga di comando siano passate attraverso un vettore di tipo Stringa.
Più precisamente Exec pretende che ogni parte essenziale e significante della riga di comando sia contenuta in un singolo elemento del vettore passato.

Invece, la soluzione vista sopra:
Codice: [Seleziona]
Exec [cmd]
passa, sì, un array di stringhe alla funzione Exec, ma l'intera riga di comando è passata tutta insieme all'interno del 1° elemento dell'array.
...e ciò non va bene.
« Ultima modifica: 10 Agosto 2018, 19:36:14 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.161
  • Tonno verde
    • Mostra profilo
Re:Con Shell funziono, con Exec no
« Risposta #6 il: 09 Agosto 2018, 16:01:53 »
Che peccato, quante parole sprecate  :'(
Bastava che qualcuno di buona memoria mi rimandasse a questa discussione che mi era sfuggita (se si fa una ricerca con exec si ottiene un mare di comandi SQL), o alla cosa più importante la pagina della wiki.
Rimane il fatto che con il tipo di programmi a cui sono interessato ben difficilmente dovrò ricorrere alla shell & C.
La mia unica colpa è stata quella di voler aiutare un conoscente mentre ero in altre faccende affaccendato, ho ricevuto l'ennesima lezione sul farsi gli affari propri.
Un'intera giornata praticamente buttata.  :'(
 :P :P :P

 :ciao: :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.371
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Con Shell funziono, con Exec no
« Risposta #7 il: 09 Agosto 2018, 19:10:47 »
Rimane il fatto che con il tipo di programmi a cui sono interessato ben difficilmente dovrò ricorrere alla shell
Io sono d'accordo con le grandi perplessità ceskhoniane sull'uso smodato di Exec e Shell.
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

ujlain

  • Visitatore
Re:Con Shell funziono, con Exec no
« Risposta #8 il: 10 Agosto 2018, 14:52:39 »
Exec finally worked for me. The mistake I was making was treating Exec like Shell  :nono:. Exec expects each parameter to be a separate string separated by a comma. Example

Exec ["ffmpeg", "-y", "-i", fInp, "-f", "3gp", "-vcodec", "h263", "-vf", "scale=352x288", "-acodec", "aac", "-strict", "-2", "-nostats", fOut] Wait
   
Above worked for me. fInp is the input video file name. fOut is the output file name. I will upload the sample working code on Gambas Farm soon.

ujlain

  • Visitatore
Re:Con Shell funziono, con Exec no
« Risposta #9 il: 10 Agosto 2018, 14:58:46 »
I need to thank Gianluigi for pointing out to me this link http://gambaswiki.org/wiki/doc/shellexec
A repeat reading of above helped. But that is the way GAMBAS is  :hatecomputer:.. little or no documentation and where available , it is cryptic and needs a fine concentrated reading !

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.161
  • Tonno verde
    • Mostra profilo
Re:Con Shell funziono, con Exec no
« Risposta #10 il: 10 Agosto 2018, 17:31:32 »
I need to thank Gianluigi for pointing out to me this link http://gambaswiki.org/wiki/doc/shellexec
A repeat reading of above helped. But that is the way GAMBAS is  :hatecomputer:.. little or no documentation and where available , it is cryptic and needs a fine concentrated reading !

 :D
It is true that we would need more documentation, but the current one is good enough, the problem is that it is not easy to find it.

 :ciao: :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.371
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Con Shell funziono, con Exec no
« Risposta #11 il: 10 Agosto 2018, 21:50:16 »
  ???

.........

« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.161
  • Tonno verde
    • Mostra profilo
Re:Con Shell funziono, con Exec no
« Risposta #12 il: 10 Agosto 2018, 22:53:07 »
  ???

 ??? Non sei d'accordo che di documentazione non ce n'è mai abbastanza, ma quella che c'è e discreta solo che è molto sparsa e difficile da reperire?  :-\
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.371
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Con Shell funziono, con Exec no
« Risposta #13 il: 12 Agosto 2018, 02:59:50 »
Exec ["ffmpeg", "-y", "-i", fInp, "-f", "3gp", "-vcodec", "h263", "-vf", "scale=352x288", "-acodec", "aac", "-strict", "-2", "-nostats", fOut] Wait

Ad ogni modo mi pare che questa riga converta un file video di formato .3gp in un file audio di formato .aac mediante il programma ffmpeg.
Per chi non possegga nel proprio sistema questo programma, ...shell per shell, è possibile utilizzare le risorse di GStreamer, che possediamo avendole caricate preliminarmente con l'installazione di Gambas.

Codice: [Seleziona]
Public Sub Main()

  Shell "gst-launch-1.0 filesrc location=/percorso/del/file.3gp ! decodebin ! audioconvert ! voaacenc ! 'audio/mpeg,stream-format=adts' ! filesink location=/percorso/del/file.acc"

End
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.161
  • Tonno verde
    • Mostra profilo
Re:Con Shell funziono, con Exec no
« Risposta #14 il: 12 Agosto 2018, 12:45:38 »
Non sono sicuro perché non l'ho provato, ma lui mi ha detto di averci convertito, riducendone il peso del 30%, file mp4 in 3gp
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro