argumente an die shell übergeben.

Alle Fragen zur Programmierung, die nicht in die speziellen Themen passen
Antworten
consolefetischist
Foriker
Beiträge: 39
Registriert: So 12. Apr 2020, 14:06
Kontaktdaten:

argumente an die shell übergeben.

Beitrag von consolefetischist » Fr 30. Jul 2021, 19:21

Habe oft gehört das es nicht ohne weiteres geht von Gambas aus Argumente an eine Shell zu übergeben..

Hatte das vor Jahren mal gelöst, konnte mich nur nicht mehr erinnern wie, und das Programm gibt es auch nicht mehr.
Habs heute aber mal wieder gebraucht.
Klick hat es gemacht als mir eingefallen ist, das ich die Shell als variable von Gambas aufrufen kann, und dann mit Argumenten.

shell "programm -x -a $wert" geht natürlich nicht, aber

dim dies as string
dim das as string="rm "
dim res as string
dies=filechooser1.value
res=das&dies

shell "res"
funktioniert wunderbar.


Wenn ich also innerhalb Gamba's mir das zusammenbaue was ich später an die Shell übergeben will läuft das und ich komme an dem gomblisierten exec vorbei.
in meinem konkreten Fall, brauche ich das um meine Audios aufzuräumen. hier mal der Kot :P
gambas code

Public Sub Button1_Click()                    '   play

Dim blank As String
Dim blank2 As String
Dim blank3 As String
Dim blank2_1 As String



'Label1.text = FileChooser1.Value  


blank = "mplayer -slave -volume 80 "            ' setze parameter für mplayer
blank2 = FileChooser1.Value
blank2_1 = Quote(FileChooser1.Value)       ' füge anführungszeichen hinzu falls dateiname leerzeihen enthält
blank3 = blank & blank2_1
'Print blank3
Shell blank3                                                       ' führe shell mit argumenten aus

End


Public Sub FileChooser1_Change()
  
Label1.text = FileChooser1.Value                                 'welches files ist ausgewählt
  
End

Public Sub Button4_Click()

  Shell "killall mplayer"                                          'etwas brutal aber tut's

End

Public Sub Button3_Click()

  

End

Public Sub Button2_Click()                                      'lösche ausgewählte datei, reload filechooser keine nachfrage.

Dim blank As String
Dim blank2 As String
Dim blank3 As String
Dim blank2_1 As String
blank = "rm "
blank2 = FileChooser1.Value
blank2_1 = Quote(FileChooser1.Value)
blank3 = blank & blank2_1

Shell blank3 Wait
  
FileChooser1.Reload
End


der quelltext ist ne stunde alt und noch nicht aufgeräumt - und so wie ich mich kenne wird er auch nie aufgeräumt :P

LG
hachja, die erste variable also das programm etc muss am ende ein leerzeichen enthalten, sonst meckert die shell, das ist also absicht im code ^

Benutzeravatar
cogier
Foriker
Beiträge: 71
Registriert: Do 19. Jul 2018, 17:18
Wohnort: Guernsey, Channel Islands
Kontaktdaten:

Re: argumente an die shell übergeben.

Beitrag von cogier » Sa 31. Jul 2021, 14:56

Sie könnten Ihren gesamten Code entfernen und nur Folgendes verwenden: -
gambas code
''Requires gb.sdl2.audio

Public Sub FileChooser1_Change()

  Music.Stop
  Try Music.load(FileChooser1.SelectedPath)
  If Error Then Return
  Music.Play

End

consolefetischist
Foriker
Beiträge: 39
Registriert: So 12. Apr 2020, 14:06
Kontaktdaten:

Re: argumente an die shell übergeben.

Beitrag von consolefetischist » Sa 31. Jul 2021, 15:44

cogier hat geschrieben:
Sa 31. Jul 2021, 14:56
Sie könnten Ihren gesamten Code entfernen und nur Folgendes verwenden: -
gambas code
''Requires gb.sdl2.audio

Public Sub FileChooser1_Change()

  Music.Stop
  Try Music.load(FileChooser1.SelectedPath)
  If Error Then Return
  Music.Play

End
Ehm ja, natürlich. Allerdings funktioniert das Beispiel aus mir unerfindlichen Gründen nicht ( hat es noch nie ).

Abgesehen davon war ja auch nur die Möglichkeit Parameter an die Shell zu übergeben im Fokus. :)
LG

Benutzeravatar
cogier
Foriker
Beiträge: 71
Registriert: Do 19. Jul 2018, 17:18
Wohnort: Guernsey, Channel Islands
Kontaktdaten:

Re: argumente an die shell übergeben.

Beitrag von cogier » Sa 31. Jul 2021, 18:57

OK. Versuchen Sie dies, es funktioniert bei mir.
gambas code
Public Sub FileChooser1_Change()

  Shell "mplayer -slave " & FileChooser1.SelectedPath

End

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast