Neuen CMD ,Batch, Dos, eingabeauforderung Befehl erstellen

  • VB.NET

Es gibt 21 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    Neuen CMD ,Batch, Dos, eingabeauforderung Befehl erstellen

    Hi ich wollte mal fragen wie ich für CMD ein neuen befehl erstellen kann z.b. wenn ich in cmd "play" eingebe so dass music im hintergrund abgespielt wird. Ich würde mich freuen wenn mir wer da weiter helfen kann :)
    Du musst wissen,Cmd ist nur en Commandline Interpreter d.h. gibst du z.B. ipconfig ein,dann startest du eigentlich nur die IPConfig.exe im Windows Verzeichnis(oder system32..keine ahnung).
    D.h. der Befehl wäre eig

    Quellcode

    1. start C:\Windows\System32\ipconfig.exe

    Du müsstest also vorher deine Executable ins System verzeichnis legen,aber willst du das dem User der das Programm nutzt wirklich antun?
    das ist nicht so das was ich gesucht habe ich will eine Anwendung machen die wenn ich play + ein music titel eingebe so das die music dann im hintergrund abspielt mit my.computer...

    Aber trotzdem danke das ihr geantwortet habt :)

    Dim Programmer as string schrieb:

    ich will eine Anwendung machen
    die alles auf einmal kann.
    Fang an und erstell Dir ein kleines Testprojekt und probiere, darin

    Dim Programmer as string schrieb:

    mit my.computer
    sbzuspielen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    funktioniert nicht so wie ich das vorhabe

    ich weis das es mit my.computer geht ich versuche schon die ganze zeit aus einer einzigen zeile (in der exe) die befehle aus zulesen so das ich praktisch gesagt wenn meine exe play Heist so das ich nur play.exe Music.wav eingeben muss.

    Also nicht das ich play und dann enter drücke um dann den namen der *.wav datei einzugeben einzugeben da ich dies etwas nervig finde, ich weiß im moment auch nicht ob man die zwei variablen in einer zeile (in der exe) bestimmen kann
    Das, was Du suchst, nennt sich CommandLineArgs

    VB.NET-Quellcode

    1. Module Module1
    2. Sub Main()
    3. For Each s As String In Environment.GetCommandLineArgs()
    4. Next
    5. End Sub
    6. End Module
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Wenn Du Dich hinsetzt und das ein bisschen probierst, dann kommst Du schnell von selber dahinter. Mach Dir ne Konsolenanwendung und spiel ein bisschen mit dem, was ich Dir geschrieben habe rum. Das ist keine Raketenwissenschaft.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    warum geht das script nicht eigentlich ist doch alles richtig oder übersehe ich da was :?:

    VB.NET-Quellcode

    1. Imports System
    2. Module Module1
    3. Dim startm As String
    4. Sub Main()
    5. Dim Parameter() As String = Environment.GetCommandLineArgs().ToArray
    6. For i = 0 To Parameter.Length - 1
    7. If Parameter(i).ToString.Contains("-s") Then
    8. Dim Music As String = Parameter(i)
    9. ' Music = Music.Replace("-st", Nothing)
    10. Music = Music.Replace("-s", Nothing)
    11. Music = Music.Replace("-", " ")
    12. startm = Music
    13. MsgBox(Music)
    14. My.Computer.Audio.Play(startm, AudioPlayMode.Background)
    15. ElseIf Parameter(i) = "-st" Then
    16. My.Computer.Audio.Stop() End If
    17. Next
    18. End Sub
    19. End Module
    So in Etwa würd ichs machen.

    VB.NET-Quellcode

    1. Imports System.IO
    2. Imports System.Media
    3. Module Module1
    4. Sub Main()
    5. For Each s As String In Environment.GetCommandLineArgs()
    6. If s.ToLower().StartsWith("/s=") AndAlso s.ToLower().EndsWith(".wav") Then
    7. Dim soundToPlay As String = s.Replace("/s=", "")
    8. If File.Exists(soundToPlay) Then
    9. Try
    10. Dim player As New SoundPlayer(soundToPlay)
    11. player.Play()
    12. Catch ex As Exception
    13. Console.WriteLine("Der Sound {0} konnte nicht wiedergegeben werden", soundToPlay)
    14. End Try
    15. End If
    16. End If
    17. Next
    18. End Sub
    19. End Module


    Da auch der SoundPlayer aus dem .Media-Namespace nur wav´s abspielt, solltest Du vorher prüfen, ob das übergebene Argument auch auf .wav endet, was aber noch keine Garantie dafür ist, dass es auch abgespielt werden kann. Somit kannst Du das Erzeugen des SoundPlayers und den Funktionsaufruf .Play() in einen Try-Catch-Block packen. Alterantiv kannst Du auch My.Computer.Audio.Play verwenden, wenn Dir das lieber ist. Ich persönlich meide den My-Namespace.

    Jedes Commandozeilenargument wird durch ein Leerzeichen getrennt. Also musste darauf achten, dass Du keine Leerzeichen zwischen den Argumenten hast... Nehmen wir an, Deine .exe heisst playSound.exe, dann erfolgt der Aufruf so.

    VB.NET-Quellcode

    1. playSound.exe /s=sound.wav
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    bei mir spielt der keinen sound ab der macht nichts habs ausprobiert
    in meinem fall würde es hesien cmdwav.exe /s=music.wav aber es spielt nichts ab :?:
    bedenke ich habe vb 2010 (ich weiß nicht wie weit es das programm beeinträchtigt

    Dim Programmer as string schrieb:

    bedenke ich habe vb 2010 (ich weiß nicht wie weit es das programm beeinträchtigt
    Gar nicht.
    Du vermengst hier 2 Teilaufgaben und suchst den Fehler ggf. an einer ganz falschen Stelle.
    1. Du musst stets den ganzen Pfad zur WAV-Datei übergeben.
    2. Teste den CmdLineParameter unabhängig vom Player.
    Schreib Dir zunächst mal den Pfad einer WAV-Datei hart in Dein Programm und bringe den Player zum Laufen.
    Danach befasse Dich mit der Parameterübergabe.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Es kommt kein fehler und keine music aber die parameter gehen

    VB.NET-Quellcode

    1. Dim player As New SoundPlayer("C:\Users\%username%\Documents\Visual Studio 2010\Projects\cmdwav\cmdwav\bin\Release\kitmusic.wav")
    2. player.Play()
    Mach das mal testweise in einer WinForm-Anwendung.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Ich war auf dem holz weg

    VB.NET-Quellcode

    1. Dim parameter() As String = Environment.GetCommandLineArgs().ToArray
    2. For i = 1 To parameter.Length
    3. 'me.listbox1.items.add(AlleParameter(i))
    4. '--Check if exist file
    5. If My.Computer.FileSystem.FileExists(parameter(i).ToString) Then
    6. My.Computer.Audio.Play(parameter(i).ToString, AudioPlayMode.Background)
    7. Else
    8. MsgBox("DIe angegebene datei ist keine *.wav datei!")
    9. End If
    10. Next



    Aber ich kriege eine fehler meldung aber ich sehe keinen fehler es sagt mir zeile 4 aber ich habe doch eigentlich alles richtig geschrieben
    oder sehe ich das faltsch?